2

我只是打电话给

window.location = '../MyController/MyAction?campId=' + campId + '&campName=' + campName;

并在行动中收到它

[HttpGet]
    public ActionResult MyAction(int campId, string campName)
    {

...

我的问题是来自 js 传递 campName 值'Anish#',但实际上我只得到'Anish'。# 之后的价值在没有采取行动。我该如何解决这个问题。

任何建议表示赞赏。

4

2 回答 2

5

您需要使用encodeURIComponentjavascript 函数对所有参数进行 URL 编码:

window.location.href = '../MyController/MyAction?' + 
    'campId=' + encodeURIComponent(campId) + 
    '&campName=' + encodeURIComponent(campName);

或者,如果您使用的是 jQuery,您可以使用该$.param()函数来正确地对您的参数值进行 URL 编码:

var parameters = $.param({ campId: campId, campName: campName });
window.location.href = '../MyController/MyAction?' + parameters;
于 2013-06-11T09:02:58.293 回答
1

这里的问题是该#字符用于将 URL 的客户端部分与服务器部分分开。

例如

http://www.example.com/where?this_is=a_param#this_can_be_an_anchor_name

我不相信客户端 URL 片段(即 # 之后的数据)会返回给浏览器。

如果您尝试做的是返回 a#作为参数值的一部分,那么如 Darin 的回答中讨论的 URL 编码参数值将为您解决这个问题。

于 2013-06-11T09:04:04.870 回答