我很困惑,与如何看法是举办的,重要的是要理解这样ASP.NET 视使用的公约》得到的一切工作的权利。

下风景的目录,有子目录。在这些子目录景。我假定子目录的地图控制器,并控制行动上的观点包含在其子目录。

是有一个新出现的期望的是什么类型的意见中包含的这些目录?例如,应该默认的页面上的每个目录可以索引。aspx?该网页跟一个命名的公约,例如创建[控制].aspx,列表[控制].aspx,等等?或者不会它没事?

有帮助吗?

解决方案

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

让我们看一下最简单的控制器动作:

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

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

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

因此,如果您的控制器被称为AccountController,它将在〜/ Views / Account

中查找

但有时您可能不想遵守这些规则。例如,两个不同的操作可能会返回相同的视图(使用不同的模型或其他内容)。在这种情况下,如果您在操作中明确指定了视图名称:

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

请注意,使用WebFormViewEngine时,“视图名称”指的是“视图名称”。通常与文件名相同,减去扩展名,但框架不需要其他视图引擎。

同样,您可能还有理由希望应用程序查找视图和非默认文件夹。您可以通过创建自己的ViewEngine来实现。我在

其他提示

在关于预期地名的意见,我认为这是一件事情,每个项目或组织将尝试标准化。

因为你暗示你的问题,它可能是这些观点(或更准确地说,操作使它们)成为受欢迎的,例如下面那个是常见的,在退休应用程序采取的其他范例:

  • /命令/(即索引)
  • /命令/show/123
  • /订单/编辑/123
  • /订/更新/123
  • /命令/新
  • /命令/建
  • /命令/销毁/123

选择/标准化的看法在很大程度上取决于你怎么模型应用程序(说明),以及如何精细的你想去的地方。接近你的地图你们的控制对个别类型(咳嗽资源的咳嗽...),缩短你们的行动往往会更容易,你将能够按照一套标准的行动(如在上面的例子)。

我还认为,较短的行动,帮助推动更多的和更多的商业模式的逻辑进入该模型本身,它所属的地方。

scroll top