应视图文件/目录结构在ASP.NET MVC是什么?(What should the view fi

2019-08-01 06:07发布

我很困惑与意见如何组织,并且重要的是要明白这是ASP.NET MVC使用约定把一切工作的权利。

根据该意见目录中,有子目录。 这些子目录里面有意见。 我假设的子目录映射到控制器和控制器作用于包含其子目录内的意见。

有没有被包含在这些目录中的何种类型的意见新兴期待? 例如,应该为每个目录的默认页面的Index.aspx? 如果该页面遵循命名约定如创建[控制器]的.aspx,列表[控制器]的.aspx等? 或者它没有关系?

Answer 1:

查看目录命名和文件命名是很重要的,因为ASP.NET MVC框架使得某些关于他们的假设。 如果不符合这些假设,那么你必须编写代码来让框架知道你在做什么。 一般来说,你应该,除非你有一个很好的理由不符合这些假设。

让我们来看看最简单的可能控制器操作:

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

因为没有视图名称已在调用指定查看(),框架将推定视图文件名将一样的动作名称。 该框架有一个名为视图引擎类型,这将提供扩展。 默认的视图引擎是WebFormViewEngine,其将采取的名字和一个.aspx追加到它。 因此,在这种情况下,完整的文件名会NotAuthorized.aspx。

但是,在哪个文件夹将在文件中发现了什么? 同样,视图引擎提供的信息。 随着WebFormViewEngine,它将在两个文件夹:〜/查看/共享和〜/查看/ {}控制器

所以,如果你的控制器被称为的AccountController,它看起来在〜/查看/账户

但也有可能是时候,你不想遵守这些规则。 例如,两个不同的动作可能会返回相同的视图(使用不同的模型,或东西)。 在这种情况下,如果你在你的行动明确指定视图名称:

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

请注意,WebFormViewEngine,在“视图名称”通常是相同的文件名,少的延伸,但框架不要求其他视图引擎。

同样,你也可能有一个理由要你的应用程序,寻找观点和非默认的文件夹。 您可以通过创建自己的ViewEngine做到这一点。 我在显示技术这个博客帖子 ,但类型名称是不同的,因为它是为框架的早期版本编写的。 其基本思想仍然是相同的,但是。



Answer 2:

在关于对意见预期的名字,我认为这是那些东西,每个项目或组织将试图规范一个。

当你暗示对你的问题,它可能是一些意见的(或者更准确地说,使得它们的操作)全线变得流行,像例如那些下面是在采用REST模式的RoR应用中常见的:

  • /命令/(即,索引)
  • /命令/显示/ 123
  • /命令/编辑/ 123
  • /命令/更新/ 123
  • /命令/新
  • /命令/创建
  • /命令/破坏/ 123

视图的选择/标准化很大程度上取决于你如何建模应用程序(的说法明显),以及如何细粒度你想去的地方。 越接近你的映射控制器单独的模型类(咳... ...资源咳嗽),时间越短你的行为将趋于更容易,你将能够遵循一套标准的动作(如上面的例子)。

我也相信,更短的操作将帮助推动越来越多的模型业务逻辑的进入模式本身,它属于哪里。



文章来源: What should the view file/directory structure be in ASP.NET MVC?