【发布时间】:2009-12-21 17:24:18
【问题描述】:
如果我有路线:
routes.MapRoute(
"RouteName", // route name
"{action}", // url with parameters
new { controller = "Home", action = "Index", id = "" } // parameter defaults
);
我希望能够捕获以下形式的 URL:
http://sitename.com/about
http://sitename.com/contact
http://sitename.com/others
当 Home 控制器中存在带有所需 URL 名称的操作时,这显然有效。如果我输入了错误的 URL,例如 http://sitename.com/foo,并且 Home 控制器中不存在 foo 操作,我想将应用程序定向到未找到的 404 页面,但显然如果我输入 foo,它正在寻找家庭控制器中的 foo 动作。有没有办法在不将所有子页面硬编码到 global.asax 的情况下保持通用性。如果可能的话,我想避免:
routes.MapRoute(
"About", // route name
"about", // url with parameters
new { controller = "Home", action = "About", id = "" } // parameter defaults
);
routes.MapRoute(
"Contact", // route name
"contact", // url with parameters
new { controller = "Home", action = "Contact", id = "" } // parameter defaults
);
谢谢。
【问题讨论】:
-
您是否考虑过使用自定义错误页面,在用户输入无效 URL(以及其他错误)时将其重定向到特定位置? msdn.microsoft.com/en-us/library/h0hfz6fc(VS.71).aspx
-
是的,我已将其添加到 web.config 中,但愚蠢地将其设置为 RemoteOnly。很抱歉混淆了。这个问题可以结束了。
标签: asp.net asp.net-mvc asp.net-mvc-routing