我正在尝试将XML字符串从HTML / JavaScript客户端传递到ASP.NET MVC服务器端。问题是XML字符串永远不会到达服务器,而普通的"非XML"字符串将成功传输。
客户端的相关JavaScript代码如下:
function TransferXmlDataToServer() {
var sXml = "<Tag>This is an XML test string.</Tag>"
$.ajax({
type: "POST",
url: '@Url.Action("TransferXMLData", "Home")',
data: { sInputXml: sXml },
dataType: "json",
success: function(sReturnValue) {
alert("Value returned from server is: " + sReturnValue);
},
error: function() {
alert("There was an error on the server side");
}
})
};
这是服务器端MVC Home控制器中的相应功能:
public JsonResult TransferXMLData(string sInputXml) {
// The arguments' name must match those used in the View's Ajax call
return Json("Success");
}
从客户端调用 TransferXmlDataToServer 时,显示服务器端出现错误消息。我在服务器端的 TransferXMLData 中放了一些调试打印语句,这些语句没有被调用,表明一个甚至没有输入这个函数。
另一方面,
时sXml = "<Tag>This is an XML test string.</Tag>"
替换为
sXml = "This is a test string."
一切都按预期工作。
附加说明:
我非常感谢你知道我做错了什么。
非常感谢。
答案 0 :(得分:0)
这是因为默认情况下,asp.net可以防止看起来像HTML标记的内容被发送到未编码的控制器操作。您需要使用ValidateInputAttribute
修饰您的操作,让内容通过:
[ValidateInput(false)]
public JsonResult TransferXMLData(string sInputXml)
{
// The arguments' name must match those used in the View's Ajax call
return Json("Success");
}