簡體   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