gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 中的 View 文件/目录结构应该是什么?

转载 作者:行者123 更新时间:2023-12-04 07:30:48 27 4
gpt4 key购买 nike

我对 View 的组织方式感到困惑,理解这一点很重要,因为 ASP.NET MVC 使用约定来使一切正常工作。

在 views 目录下,有子目录。在这些子目录中是 View 。我假设子目录映射到 Controller ,并且 Controller 作用于它们子目录中包含的 View 。

是否对这些目录中包含哪些类型的 View 产生了新的期望?例如,每个目录的默认页面应该是 index.aspx 吗?页面是否应该遵循诸如 Create[controller].aspx、List[controller].aspx 等命名约定?或者没关系?

最佳答案

View 目录命名和文件命名很重要,因为 ASP.NET MVC 框架对它们做了某些假设。如果你不符合这些假设,那么你必须编写代码让框架知道你在做什么。一般来说,除非您有充分的理由不这样做,否则您应该遵守这些假设。

让我们看看最简单的 Controller Action :

    public ActionResult NotAuthorized()
{
return View();
}

因为在调用 View() 时没有指定 View 名称,框架将假定 View 文件名与操作名称相同。该框架有一个名为 ViewEngine 的类型,它将提供扩展。默认的 ViewEngine 是 WebFormViewEngine,它将采用该名称并向其附加一个 .aspx。因此,在这种情况下,完整的文件名将是 NotAuthorized.aspx。

但是在哪个文件夹中可以找到该文件?同样,ViewEngine 提供该信息。使用 WebFormViewEngine,它将在两个文件夹中查找: ~/Views/Shared 和 ~/Views/{controller}

所以如果你的 Controller 被称为 AccountController,它会在 ~/Views/Account 中查找

但有时您可能不想遵守这些规则。例如,两个不同的操作可能会返回相同的 View (具有不同的模型或其他内容)。在这种情况下,如果您在操作中明确指定 View 名称:
    public ActionResult NotAuthorized()
{
return View("Foo");
}

请注意,对于 WebFormViewEngine,“ View 名称”通常与文件名相同,没有扩展名,但框架不需要其他 View 引擎的名称。

同样,您可能也有理由希望您的应用程序查找 View 和非默认文件夹。您可以通过创建自己的 ViewEngine 来做到这一点。我在 this blog post 中展示了技术,但类型名称不同,因为它是为框架的早期版本编写的。然而,基本思想仍然相同。

关于asp.net-mvc - ASP.NET MVC 中的 View 文件/目录结构应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/127886/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com