ASP.NET MVC视图

  • 前言
    视图即是用户与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");