Tôi có trang ASP.Net MVC 3, trong đó tôi có điều khiển Html.TextAreaFor, xem mã bên dưới. Nếu tôi cố gắng để gửi trang để các http post hành động với văn bản trong dấu ngoặc nhọn như: <test>
, tôi nhận được một màn hình báo lỗi vàng nói:HtmlEncode trên bài đăng cho ASP.Net MVC 3 Html.TextAreaFor
Một giá trị Request.Form nguy hiểm đã được phát hiện từ khách hàng (RequestText = "").
Tôi không hiểu tại sao tôi nhận được điều này vì tôi tìm thấy an article by Scott Guthrie có nghĩa là cú pháp mới <%: %>
trong .Net 4, sẽ tự động HtmlEncode phần tử. Vì tôi đang sử dụng cú pháp <%:%> cho điều khiển Html.TextAreaFor, tôi nghĩ rằng nó sẽ tự động xử lý điều này và chuyển đổi các dấu ngoặc nhọn thành "& lt" thích hợp; và "& gt".
<% using (Html.BeginForm())
{ %>
<%: Html.ValidationSummary() %>
<h2>Enter a description of the support needed</h2>
<%: Html.TextAreaFor(m => m.RequestText, 4, 90, null) %>
<input type="submit" value="Submit" />
<% } %>
Chase - Tôi không muốn sử dụng [AllowHtml], không phải là cách để mã html .net mã hóa văn bản cho tôi khi tôi đăng lại hành động của bộ điều khiển? –
Bạn mã hóa nó theo cách thủ công tại bộ điều khiển. Đó là lớp dữ liệu mà bạn không muốn dữ liệu không được mã hóa bài tấn. Bạn phải xử lý điều này ở cấp độ bộ điều khiển. –
Về cơ bản, HTML không thể mã hóa dữ liệu cho bạn. Bạn có thể sử dụng Javascript, nhưng đó là xấu chỉ đơn giản bởi vì họ chỉ có thể vô hiệu hóa JS. Cách duy nhất để thực hiện điều này là ở cấp độ Server chứ không phải cấp độ máy khách. –