MVC参数返回空值问题排查:附控制器及路由代码
解决ASP.NET MVC中参数返回空值的问题
嘿,我一眼就瞅出问题所在啦!你的控制器Index方法接收的参数是name,但路由配置里定义的参数是id——这俩名字不匹配,MVC没法把URL里的参数正确绑定到方法参数上,自然就返回空值咯。
咱们来一步步修正这个问题:
方法一:修改路由参数名匹配方法参数
把路由里的{id}改成{name},让参数名对应上,这样就能正常绑定了。修改后的Global.asax.cs代码如下:
public class MvcApplication : System.Web.HttpApplication { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // Route name "{controller}/{action}/{name}", // URL参数部分把id改成name new { controller = "Home", action = "Index", name = UrlParameter.Optional } // 完善默认值配置 ); } }
这样当你访问http://localhost:xxxx/Home/Index/John时,name参数就能拿到John的值了。
方法二:保持路由不变,调整控制器方法参数
如果你不想改动路由,也有两种小办法:
方案2.1:直接修改参数名为id
public class HomeController : Controller { public string Index(string id) { return "Welcome to MVC_Demo" + id; } }
方案2.2:用特性指定绑定的路由参数名
public class HomeController : Controller { public string Index([FromRoute(Name = "id")] string name) { return "Welcome to MVC_Demo" + name; } }
另外补充个小知识点:如果是通过QueryString传递参数(比如http://localhost:xxxx/Home/Index?name=John),那不管路由里的参数名是什么,只要方法参数名和QueryString的键一致,就能正确绑定哦。
内容的提问来源于stack exchange,提问作者pradeep
相关产品推荐
相关产品推荐

