如何在Url.Action()中传递多个参数

6
我想从Url.Action传递多个参数,以下是视图中的代码:

 window.location.href = "@Url.Action("ABC", "XYZ", new { @A= ViewBag.A , @B =  ViewBag.B })";

这是我的控制器XYZ中的方法

 public ActionResult ABC(string A, string B)
 {
    // Some Code
 }

我总是只从第一个参数中获取值,第二个参数始终为空。即使我首先放入B,第二个仍然为空。 VIEW基本上是在JavaScript函数下。 这是链接:http://localhost/CargoMainSite/XYZ/ABC?A=1&B=2 请注意,在第一个参数和第二个参数之间有一些额外的文本,即“amp;”,如果我明确删除它,则可以正常工作并获取适当的值。


感谢 @Lalit Kumar 进行编辑。 - Affan Shahab
2
为什么在URL中公开了两个参数,还要使用POST方法? - gog
让我们放弃吧。如果不是POST呢? - Affan Shahab
@ggui,我刚刚编辑了我的问题。 - Affan Shahab
我不知道你的具体情况,但实际上我认为使用location.href属性来执行带参数的操作并不是最好的方式。你能否改用ajax get方法呢? - gog
@ggui 请指明如何使用它? - Affan Shahab
1个回答

21

Url.Action无法正常工作的原因是URL中的&字符已经被编码,因此您必须按照以下方式使用@Html.Raw

 window.location.href = "@Html.Raw(@Url.Action("ABC", "XYZ", new { @A= ViewBag.A , @B =  ViewBag.B }))";

1
谢谢@Abbas galiyakot,它完美地起作用了。 但我有一个问题。请告诉我是否使用@Html.Raw()会出现任何跨站脚本攻击、垃圾邮件等问题? - Affan Shahab
风险在于如何使用它。如果您正在显示用户输入的信息,最好使用@Html.Encode()。换句话说,如果您正在显示非用户输入的数据,则可以安全地使用@Html.Raw()。 - Abbas Galiyakotwala
这对我有用 --> window.location.href = "@Html.Raw(@Url.Action("ABC", "XYZ", new { A= ViewBag.A , B = ViewBag.B }))"; - sunnysidedown916

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接