【发布时间】:2015-07-06 07:39:27
【问题描述】:
假设我们有两个控制器 HomeController 和 DocumentController 和 HomeController 中有“Index”操作方法,DocumentController 中有“Add”操作方法。
在 register route(global.asax) 中有一个 home/index 条目。
但是当我尝试访问 Document/Add 时,它不会抛出任何找不到页面的错误。 理想情况下应该是这样,因为在全局 asax 的注册路由中没有路由“文档/添加”的条目。
这是怎么回事?
HomeController:
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
return View();
}
}
文档控制器:
public class DocumentController : Controller
{
public ActionResult Add()
{
return View();
}
}
RouteConfig:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
【问题讨论】:
-
要重现这一点,我们需要控制器声明以及所涉及的操作方法,以及您的路由表的外观(RouteTables.config 文件)。
-
发布您的路线配置。听起来它正在访问框架提供的默认路由(匹配 {controller}/{action})。
-
是的,在您发布代码后,您确认没有问题。您正在描述
Default路由的设计行为。 -
换句话说,当请求不包含控制器和/或操作时,“home/index”路径只是默认路径。所以
http://foo.com、http://foo.com/home和http://foo.com/home/index都在你的HomeController的Index方法中结束。这并不意味着它不会解析其他路径。 -
我理解你的意思,但我的问题是当 RouteConfig 中没有条目时 MVC 如何解析/调用文档/添加 url。 MVC 如何在路由表中添加 Document/Add。
标签: .net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 razor