Trong quá trình lập trình asp.net khi sử dụng text editor để nhập nội dung có thể bạn sẽ gặp lỗi kiểu như sau :
A potentially dangerous Request.Form value was detected from the client (ctl00$CC$txtnoidung="<p>dotnet.vn</p>"
Nguyên nhân:
.NET framework đưa ra lỗi do trong nội dung của bạn có nội dung như mã HTML ví dụ < >, có thể gây nguy hại cho trang của bạn
Có thể tham khảo thêm tại trang www.asp.net/learn/whitepapers/request-validation/.
Để khắc phục bạn có thể làm theo cách dưới đây:
Chú ý, cách này không áp dụng cho .NET framework 1.0
Bước 1:
Hủy bỏ request validation trên trang bạn đang làm việc bằng thuộc tính ValidateRequest="false" trên phần khai báo <%@ Page ...
Ví dụ
<%@ Page Language="C#" AutoEventWireup="false" Codebehind="MyForm.aspx.cs" Inherits="Proj.MyForm"%>
thay bằng
<%@ Page Language="C#" AutoEventWireup="false" Codebehind="MyForm.aspx.cs" Inherits="Proj.MyForm" ValidateRequest="false"%>
Bạn có thể khai báo trên file web.config để áp dụng cho toàn website, tuy nhiên cần chú ý nếu làm theo cách này. Khai báo của bạn trong web.config sẽ có dạng
<system.web>
<pages validateRequest="false" />
</system.web>
Bước 2:
Để hiển thị mã html trên trang web bạn cần chuyển đổi các ký tự của html ví dụ "<" thành "<" bằng hàm HttpUtility.HtmlEncode hoặc Server.HtmlEncode
Và mã lệnh của bạn có dạng
MyLabel.Text = HttpUtility.HtmlEncode(MyTextBox.Text)
Chú ý: cách này áp dụng cho .NET Framework 1.1, .NET Framework 2.0 và .NET Framework 3.5,
Đối với .NET Framework 4.0 (Visual Studio 2010), bạn cần thực hiện thêm 1 bước nữa là thêm thẻ httpRuntime vào web.config trong thẻ system.web với thuộc tính requestValidationMode="2.0"
Khai báo của bạn trong web.config sẽ có dạng
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>