日期:2014-05-17  浏览次数:20744 次

求助 ASP.NET MVC的URL Route的一个小问题
对于下面这个方法,我想问下第三个参数,设置默认值的
 new { controller = "Home", action = "Index", id = UrlParameter.Optional }
这个地方,能a= "Home", b= "Index"这个样子吗?
就是说这个controller action这两个单词是固定的吗?
后面那个id这个单词不应该是固定的吧。

routes.MapRoute(
  "Default", // 路由名称
  "{controller}/{action}/{id}", // 带有参数的 URL
  new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
  );


想知道具体routes.MapRoute 怎么根据 controller = "Home", action = "Index" 找到具体的HomeController类的 Index方法的。
望赐教。

------解决方案--------------------
Controller 和Action是必须固定的
Controller 必须是控制器的类名去除“Controller”字符串的类名,Action Controller对应的动作也就是方法名称,id对应的是Action所需要的参数,UrlParameter.Optional 表示可以忽略的意思

路由的规则设计到路由的实现机制,我没在Global文件中将路由注册到一个路由表中,mvc最终是根据模式匹配获得Controller的名称 然后加上“Controller”字符利用反射机制得到对应的实例并调用对应的Action方法的。此过程设计到 http 模块拦截请求,然后是用替换HttpContext的http处理程序实例的方式实现的。
希望对你有用

------解决方案--------------------
楼上正解