繁体   English   中英

将数据从jQuery Ajax发送到MVC COntroller

[英]Sending Data from jQuery Ajax to MVC COntroller

我正在尝试将SVG字符串从索引页发送到控制器。 但是它得到一个空值。

var str = "<svg height=\"350\" version=\"1.1\" ... svg properties ..."
console.log(str);

$.ajax({
    type: "POST",
    //contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
    //dataType: "text",
    url: window.location.origin + '/NavigationExport/GetSvgData',
    //data: '{"value":"' + str + '"}',
    data: {value :str},
}).done(function (data) {
    debugger
});

这是我的控制器代码。

[HttpPost]
public void GetSvgData(string value)
{
    return;
}

但是这段代码给了我500个内部服务器错误。

从客户端检测到一个潜在危险的Request.Form值( value="<svg height="350" ve..." )。

说明:ASP.NET在请求中检测到潜在危险的数据,因为它可能包含HTML标记或脚本。 数据可能表示试图破坏应用程序的安全性,例如跨站点脚本攻击。 如果这种输入适合您的应用程序,则可以在网页中包含代码以明确允许它。 有关更多信息,请参见http://go.microsoft.com/fwlink/?LinkID=212874

如果我用

data: '{"value":"' + str + '"}'

它向控制器发送空值

问题是因为MVC认为您正在尝试在请求中发送HTML,并阻止了它停止任何XSS攻击。 您可以通过将ValidateInput批注添加到Action来允许HTML / XML。 在您的情况下,请尝试以下操作:

[HttpPost]
[ValidateInput(false)]
public void GetSvgData(string value)
{
    return;
}

您可以在控制器中使用[ValidateInput(false)]作为操作属性,以允许将HTML字符串传递给操作。

    [ValidateInput(false)] 
    public ActionResult ActionName()
    {

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM