我只是打电话给
window.location = '../MyController/MyAction?campId=' + campId + '&campName=' + campName;
并且正在接受它作为
[HttpGet]
public ActionResult MyAction(int campId, string campName)
{
...
我的问题来自于js am传递了campName值'Anish#'但是在行动中我只得到'Anish'。在没有采取行动的#之后的价值。我怎么能解决这个问题呢。
任何建议都表示赞赏。
答案 0 :(得分:5)
您需要使用encodeURIComponent
javascript函数对所有参数进行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;
答案 1 :(得分:1)
这里的问题是#
字符用于将URL的客户端部分与服务器部分分开。
E.g。
http://www.example.com/where?this_is=a_param#this_can_be_an_anchor_name
我不相信客户端的URL片段(即#之后的数据)会被返回到浏览器。
如果您要做的是返回#
作为参数值的一部分,那么URL编码参数值将在Darin的答案中讨论,这将为您解决此问题。