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