-
前言
视图即是用户与Web应用程序的接口,用户通常会看到视图,然后在视图上进行交互,Web应用程序的视图通常是HTML格式。
-
首先了解控制器选择返回哪个视图的问题。新建一个项目,浏览到/Home/About,可以发现,ASP.NET MVC自动返回了位于项目目录下的/Views/Home/About.cshtml。打开对应的控制器——位于项目目录下的/Controller/HomeController.cs文件。
HomeController.cs中的内容如下:
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
ViewBag.Message = "My application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
结合前述ASP.NET MVC控制器Controller的内容可知道,URL被路由映射到HomeController中的About方法。起返回视图作用的只有一句:return View(); 但是ASP.NET MVC准确的返回了/Views/Home/About.cshtml.这是实际上是ASP.NET MVC的视图约定,以下为个人总结:
1.直接法。当出现return View(); 时,ASP.NET MVC将自动搜索与本控制器同名的位于Views目录的文件夹,返回与本方法同名的html文件。具体到上面的例子,ASP.NET MVC的视图选择逻辑遇到return View(); 后,发现About方法在HomeController内,于是到存储视图的Views目录下寻找Home文件夹,找到Home文件夹后,寻找与About方法同名的html文件,当找到About.cshtml文件后,将其返回。
2.自行搜索法。当出现return View("[html名]"); ,ASP.NET MVC视图选择逻辑将在ControllerName文件夹下搜索名为[html名]的视图文件。
3.绝对定位。当出现return View(~/Views/.../[html名].cshtml) 时,ASP.NET MVC视图选择逻辑将按照路径~/Views/.../搜索视图[html].cshtml文件,并将其返回。注意:使用此方法时,为了使查找视图时避开视图引擎的内部搜索机制,应该提供视图的扩展名。具体到上面的例子,如果希望使用此方法返回About.cshtml视图,应该将return View(); 替换为return View("~/Views/Home/About.cshtml");
|
请发表评论