的Javascript
我有一个方法如下,
function OpenRecord(id ,module ,screen) {
var url = '@Url.Action("OpenRecord", "Management", new { id = "_id", module = "_module",screen = "_screen" })';
url = url.replace("_id", encodeURIComponent(id));
url = url.replace("_module", encodeURIComponent(module));
url = url.replace("_screen", encodeURIComponent(screen));
window.location.href = url;
}
控制器
public ActionResult OpenRecord(string id, string module, string screen)
{
Int64 someID = Convert.ToInt64(id);
/*some act**/
return RedirectToAction(screen, module, new { id = someId});
}
当我运行时,我得到 id 和模块但屏幕 param传递 null 。当我在chrome dev工具上检查客户端时,我看到javascript方法的所有参数都被填充,而url变量中的最终url如下所示;
/Management/OpenRecord/112?module=Customer&screen=MUSTRTANML
我想那放大器&amp ;;实体破坏了我的控制器以获得最后一个参数,但我不确定,我不知道如何解决这个问题。
提前致谢。
答案 0 :(得分:0)
只需将Url.Action
包裹在Html.Raw()
中即可。或者你可以进一步采用替代方法 - url = url.replace("&", "&")
。无论你喜欢什么,我个人都会继续Html.Raw
答案 1 :(得分:0)
你需要用值
构建你的url字符串var url = '@Url.Action("OpenRecord", "Management", new { id = "_id", module = "_module",screen = "_screen" })';
这是错的,应该是
var url = '/Management/OpenRecord?id=' + _id + '&module='+ _module + '&screen='+ _screen;
上面会传递变量的值而不是名称,你不能执行Url.Action作为JavaScript的一部分这是Razor代码