Asp.net mvc 3 控制器未正确激活
我已经在我的项目中添加了一个名为UserManager的控制器(自动从ado.net框架生成) 当我启动应用程序时,尝试导航到的操作会遇到404错误,但如果我转到,则会发现该操作并正确执行 这是控制器未被调用的情况,还是只是没有将索引视为默认操作。这些属性设置在哪里 更新 问题似乎源于默认路由设置为Asp.net mvc 3 控制器未正确激活,asp.net-mvc-3,Asp.net Mvc 3,我已经在我的项目中添加了一个名为UserManager的控制器(自动从ado.net框架生成) 当我启动应用程序时,尝试导航到的操作会遇到404错误,但如果我转到,则会发现该操作并正确执行 这是控制器未被调用的情况,还是只是没有将索引视为默认操作。这些属性设置在哪里 更新 问题似乎源于默认路由设置为 "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "P
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Permits", action = "ListApplications", id = UrlParameter.Optional }
这与Usermanager的命名方案冲突(默认为索引)
我努力想知道如何添加为默认操作提供的备用路由,但最终发现路由添加的顺序决定了哪个路由接受请求(路由添加得越早,满足条件的机会就越大)
谢谢在Global.asax.cs中,检查是否设置了默认路由:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}", new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional}
);
此外,请检查控制器是否名为
UserManagerController
,是否从controller
派生。您需要确保默认路由映射将“Index”指定为global.asax文件中的默认操作
检查global.asax文件中是否有以下设置:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
回应你的评论:
仅通过添加新路由映射的方式。您还需要注意,将应用第一个匹配的路由映射,因此在Global.asax中指定映射的顺序至关重要。例如,我们希望我们的FAQ控制器使用URL{id},而不使用URL中指定的操作,因此我们在默认值之前声明了以下映射:
routes.MapRoute("Faq", "Faq/{id}", new { controller = "Faq", action = "Answer" });
好的,这很有意义,有没有一种方法可以为不同的控制器指定不同的默认操作?