我使用以下模板创建了一个示例MVC application
。
ASP.NET MVC2 空 Web 应用程序
然后 a 添加了一个名称为 First
的Controller
,右键单击ActionResult
以添加View
。
我在浏览器中输入了http://localhost:49565/First
。
查询
控制器如何在内部知道当我们键入http://localhost:49565/First
时将显示特定页面?
此外,如果我为一个Controller
添加多个视图.系统将如何决定哪一个将显示在优先级上?
控制器由 MVC 框架调用,该框架使用 Global.asax 中定义的路由.cs来确定要调用的控制器和操作。有一个默认路由,如下所示:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
当应用程序收到请求时,将尝试将URL解析为路由的格式。如果向 http://localhost:49565/
发出请求,它将使用默认值,该值转到名为 HomeController
的控制器中的Index
操作。创建新控制器、FirstController
并调用 http://localhost:49565/First
时,它使用 FirstController
而不是 HomeController
,因为它已提供(但仍用于Index
操作)。
此外,当正在调用操作并且没有显式定义视图时,它将查找与调用的操作命名相同的视图。在您的情况下,这将是~/Views/First/Index.aspx
.
编辑
如果要使用其他视图,可以在 return 语句中指定它
return View("OtherView");
它将改用~/Views/First/OtherView.aspx
。
看看这篇博文,让你了解它是如何完成的