ASP.NET MVC路由配置未正确传递参数问题求助
问题诊断与解决
这个错误的核心原因很明确:路由定义的参数名称和Action方法的参数名称不匹配,导致ASP.NET MVC无法正确将URL中的参数值绑定到Action的参数上。
具体问题点
你定义的路由是:
routes.MapRoute( name: "", url: "ModificaComunicazione/{IDArticolazione}", defaults: new { controller = "Mattinale", action = "Modifica" } );
这里URL中的参数占位符是{IDArticolazione},但你的Action方法参数是:
public ActionResult Modifica(int id) { ... }
ASP.NET MVC的模型绑定是严格按照参数名称大小写不敏感匹配的,当它找不到名为id的路由参数时,就会给非可空的int id参数传入null,从而触发你看到的错误。
两种解决办法
你可以任选一种方式来修正:
方法1:修改Action参数名,和路由保持一致
把Action的参数名改成IDArticolazione,这样就能和路由里的参数名匹配:
public ActionResult Modifica(int IDArticolazione) { // 从仓储中处理数据(注意这里也要把用到id的地方改成IDArticolazione) return RedirectToAction("Modifica", "Mattinale"); // 这里你之前写的"Modifica"控制器应该是笔误? }
方法2:修改路由的参数名,和Action保持一致
把路由里的参数占位符改成{id},和Action的参数名对齐:
routes.MapRoute( name: "", url: "ModificaComunicazione/{id}", defaults: new { controller = "Mattinale", action = "Modifica" } );
额外提示
另外注意你Action里的RedirectToAction("Modifica", "Modifica"),第二个参数是控制器名称,看起来你可能写错了,应该是RedirectToAction("Modifica", "Mattinale"),否则会尝试跳转到ModificaController的Modifica方法,可能引发新的错误。
内容的提问来源于stack exchange,提问作者Davide Vitali
相关产品推荐
相关产品推荐

