首页 > 解决方案 > Ajax 调用未通过 Url.Content 将“&”从视图传递给控制器

问题描述

Ajax 调用未传递“&” 通过 Url.Content 从视图到控制器

例如,如果 testIdVal 值为 "Interface Class & Function" ,则从下面的代码中。只有“接口类”被传递给控制器​​,“&函数”被忽略。

    $("#testdiv").data("kendoWindow").refresh({
        url: "@Url.Content("~/Customer/Test?Id=")" + testIdVal  + "&Flag=T"
    }).center().open();

标签: javascriptasp.net-mvckendo-gridasp.net-ajaxkendo-asp.net-mvc

解决方案


&在 URL 的查询字符串中用作分隔符。如果要使用值&本身,则需要对其进行编码。

// JavaScript:
encodeURIComponent("&");
// Output: %26

所以你需要设置testIdVal为“接口类%26函数”。

$("#testdiv").data("kendoWindow").refresh({
    url: "@Url.Content("~/Customer/Test?Id=")" + encodeURIComponent(testIdVal) + "&Flag=T"
}).center().open();

查询字符串采用?var1=val1&var2=val2&var3=var3 .... 如果不对 & 符号进行编码,任何解释 URL 的东西都会认为您正在尝试声明一个名为“Function”的新变量。


推荐阅读