MVC4中用jQuery+Url.Action传双参数遇命名参数顺序错误求助
问题原因与解决方案
这个编译错误的根源很明确:C#的语法规则要求,当调用方法混合使用位置参数和命名参数时,所有命名参数必须放在未命名的位置参数之后。
你在调用@Url.Action时,前两个参数用了命名参数(actionName:和controllerName:),但第三个传递路由值的匿名对象是位置参数——这就违反了上述规则,所以编译器抛出了"Named argument specifications must appear after all fixed arguments have been specified"的错误。
两种可行的修复方案:
方案1:移除前两个参数的命名,使用位置参数
因为Url.Action的标准重载顺序就是actionName → controllerName → routeValues,直接按顺序传递参数即可:
$('#salir').click(function () { window.location.href = '@Url.Action("MostarOrdenInicioEmpleados", "Home", new { id = Convert.ToString(Model.num_doc), grupo= Convert.ToInt32(Model.grupo)})'; });
方案2:给第三个参数也添加命名参数
如果想保留命名参数的可读性,可以给路由值参数也加上routeValues:的命名,这样所有参数都用命名方式,顺序就不受限制了:
$('#salir').click(function () { window.location.href = '@Url.Action(actionName: "MostarOrdenInicioEmpleados", controllerName: "Home", routeValues: new { id = Convert.ToString(Model.num_doc), grupo= Convert.ToInt32(Model.grupo)})'; });
额外说明
修复后,生成的URL会正确携带id和grupo参数,和你后端MostarOrdenInicioEmpleados Action的参数定义完全匹配,能正常接收参数值。
内容的提问来源于stack exchange,提问作者Pablo Tobar
相关产品推荐
相关产品推荐

