我正在开发 .NET 4.0 MVC 项目。我正在尝试 Ajax 从我的 KO 模型中发布一条数据。该数据是以下 XML 格式的字符串。
<SearchCriteria><Criteria SearchOn="Name" SearchValue="test 3" /></SearchCriteria>
我正在尝试像这样发布它。
$.ajax({
url: destUrl,
data: ko.toJSON(DataToPost()),
type: "POST",
success: function (result) {
// I am doing my stuff here.
}
},
error: function (request, textStatus, errorThrown) {
alert(request.statusText);
}
});
在这里您会注意到正在发送的数据是"ko.toJSON(DataToPost())"
. DataToPost()
返回包含在我的数据成员中的XML
字符串。用于将数据转换为.KO model
DataToPost
ko.toJSON()
KO model
JSON
这会引发运行时异常,通常thrown
在我们发布任何包含javascript
或html
标签的内容时。这是.NET
. 以下是例外。
A potentially dangerous Request.Form value was detected from the client.
<SearchCriteria><Criteria SearchOn="...est 3\" /></SearchCriteria>
我有时会遇到类似的情况(尽管我没有使用KO
那个时间,而且这是正常的帖子,即非Ajax
)。我当时通过使用克服了这个问题,javascript
escape()
但这次是它failed
。我使用它如下
$.ajax({
url: destUrl,
**data: ko.toJSON(escape(SearchCriteria()))**,
type: "POST",
success: function (result) {
// I am doing my stuff here.
}
},
error: function (request, textStatus, errorThrown) {
alert(request.statusText);
}
});
其他流行的修复方法是在页面级别或应用程序级别禁用此安全性。可以按如下方式进行。
页面级别。
<%@ Page validateRequest="false" %>
应用层。
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
但是取消这种安全性并不好。我认为这不是明智之举。现在我不知道该怎么办。需要建议。
提前致谢!