C# 缺少参数值'#';行动中

C# 缺少参数值'#';行动中,c#,javascript,asp.net-mvc-4,C#,Javascript,Asp.net Mvc 4,我只是打电话给你 window.location = '../MyController/MyAction?campId=' + campId + '&campName=' + campName; 在行动中,我把它当作 [HttpGet] public ActionResult MyAction(int campId, string campName) { 我的问题来自js,我传递campName值'Anish#',但实际上我只得到'Anish'。在不采取行动的情况下

我只是打电话给你

window.location = '../MyController/MyAction?campId=' + campId + '&campName=' + campName;
在行动中,我把它当作

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

我的问题来自js,我传递campName值'Anish#',但实际上我只得到'Anish'。在不采取行动的情况下,在#之后的价值。我怎样才能解决这个问题


非常感谢您的建议。

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

window.location.href = '../MyController/MyAction?' + 
    'campId=' + encodeURIComponent(campId) + 
    '&campName=' + encodeURIComponent(campName);
或者,如果您使用的是jQuery,则可以使用该函数,该函数将负责对参数值进行正确的URL编码:

var parameters = $.param({ campId: campId, campName: campName });
window.location.href = '../MyController/MyAction?' + parameters;

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

例如

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


如果您试图返回一个
#
作为参数值的一部分,那么对参数值进行URL编码(如Darin的回答中所述)将为您解决此问题。

这是一个很棒的解决方案。。谢谢。
http://www.example.com/where?this_is=a_param#this_can_be_an_anchor_name