由于这个原因,我对MVC前端有点困惑,我定义了以下默认路由;
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
当我使用Url助手时,即
@Url.Action("MyAction")
它会生成此网址;
/?action=MyAction&controller=MyController
并且从未找到我的动作方法。帮助者如何生成Urls以及如何更正?
答案 0 :(得分:1)
只需使用重载来指定操作和控制器:
@Url.Action("MyAction", "MyController")
如果使用仅采用操作名称的重载,则控制器将从当前路径数据中获取。默认路由不会进入它。
即
@Url.Action("MyAction")
相当于
@Url.Action("MyAction", (string)ViewContext.RouteData.Values["controller"])
答案 1 :(得分:0)
我有同样的问题,我有一个使用WebForms构建的Web应用程序,并慢慢地将部件迁移到MVC,以支持我有一个路由条目,最终破坏路由评估代码并导致有趣的动作网址
this blog post解决了我的问题