如何通过jQuery将两个参数发送到带有Url.Action帮助器的MVC Action

时间:2018-05-30 19:30:02

标签: jquery asp.net-mvc razor arguments

我一直在研究一个MVC4 C#项目,在我的Razor视图中需要在点击到期按钮时向特定的MVC Action发送两个参数,我决定使用jQuery来发送这两个参数。

这是点击事件中的代码:

$('#salir').click(function () {
    window.location.href = '@Url.Action(actionName: "MostarOrdenInicioEmpleados", controllerName: "Home", new { id = Convert.ToString(Model.num_doc), grupo= Convert.ToInt32(Model.grupo)})';
});

这是我需要发送两个参数的控制器:

[HttpGet]
[Authorize]
public ActionResult MostarOrdenInicioEmpleados(string id, Int32 grupo)

但这是Razor视图中的错误:

enter image description here

错误文字:

  

命名参数规范必须出现在所有固定参数之后   已经指定

你能告诉我这是什么问题吗?

2 个答案:

答案 0 :(得分:3)

你使用了两个命名参数(actionName:controllerName: 之前你使用了一个固定的(即未命名的,特定位置的)参数(在这种情况下,这是你的参数,以new开头,你没有命名),而错误说你只能在之后将命名参数放在之后。

所以要么

a)更改参数的顺序,使命名的参数最后

b)命名所有参数,或

c)不要为任何参数命名,并确保它们符合预期的顺序。

答案 1 :(得分:2)

这只是说:如果你提供命名参数(在你的情况下,actionName:controllerName:),他们必须在非命名之后(也称为固定参数) )。

在您的情况下,您可以通过使最终参数(routeValues)也成为命名参数来解决此问题:

    window.location.href = '@Url.Action(actionName: "MostarOrdenInicioEmpleados", controllerName: "Home", routeValues: new { id = Convert.ToString(Model.num_doc), grupo= Convert.ToInt32(Model.grupo)})';