我一直在研究一个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视图中的错误:
错误文字:
命名参数规范必须出现在所有固定参数之后 已经指定
你能告诉我这是什么问题吗?
答案 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)})';