当前位置 : 主页 > 网络编程 > ASP >

asp.net-mvc – Asp.Net MVC控制器 – 动作和视图映射元数据

来源:互联网 收集:自由互联 发布时间:2021-06-24
在我的ASP.net MVC应用程序中,运行ASPX视图引擎,我有一个具有多种操作方法的控制器.对于这些操作方法中的每一个,我注意到我可以分配多个视图,然后在控制器的操作方法中按名称调用每
在我的ASP.net MVC应用程序中,运行ASPX视图引擎,我有一个具有多种操作方法的控制器.对于这些操作方法中的每一个,我注意到我可以分配多个视图,然后在控制器的操作方法中按名称调用每个视图.

我想知道这个映射数据存储在项目中的位置.我扫描了项目文件,发现这些信息无处可寻.如何知道包含多个视图的大型项目在哪里可以找到特定操作的所有视图.我最初认为这将存储在由Visual Studio生成和维护的一些配置文件中.但事实似乎并非如此.那么这些数据存储在哪里呢?在具有多个视图的大型项目中,确定哪些文件确实需要以及哪些文件不是真的将是一场噩梦.

你对此有何看法?

圣地亚哥是正确的,ASP.NET MVC是基于约定的,但是当控制器看起来像这样时,要进一步扩展它:

public class FooController : Controller
{
    public ActionResult Bar()
    {
        return View();
    }
}

按照惯例,视图引擎将在以下位置搜索名为Bar的视图:

~/Views/Foo
~/Views/Shared

通过添加新操作而不添加视图可以很容易地看到这一点,您将获得此信息异常屏幕:

The view 'Bar' or its master was not found or no view engine supports the searched 
locations. The following locations were searched:
    ~/Views/Foo/Bar.aspx
    ~/Views/Foo/Bar.ascx
    ~/Views/Shared/Bar.aspx
    ~/Views/Shared/Bar.ascx
    ~/Views/Foo/Bar.cshtml
    ~/Views/Foo/Bar.vbhtml
    ~/Views/Shared/Bar.cshtml
    ~/Views/Shared/Bar.vbhtml

同样,如果您返回View(“ViewNameHere”),它将在相同位置查找ViewNameHere.

要回答您的问题,即使项目可能有数百个视图和操作可以返回多个视图,除非您覆盖视图引擎的行为,否则所有视图都会根据其控制器进行分组或放在共享文件夹中.

网友评论