ASP.NET被排除的视图被击中

时间:2010-12-13 17:29:40

标签: asp.net-mvc-2

我有一个场景,我将两个视图合并到一个共享视图中。

从项目中排除但总是被击中

  • 查看/富/ Do.aspx
  • 查看/酒吧/ Do.aspx

项目中存在,但永远不会被击中

  • 查看/共享/ Do.aspx

文件仍然存在于源代码管理中,但它们不再是项目的一部分。

  1. 为什么不再是项目一部分的View优先于作为项目一部分的View?也许我认为MVC做得更多......

  2. MVC是否只是查找任何可以找到匹配的文件而不管它是否属于项目的一部分?

  3. 如果您可以使用正确的名称删除文件,这是否是一个潜在的安全漏洞,即使它不是项目的一部分?

1 个答案:

答案 0 :(得分:2)

答案2是正确的。 MVC将在视图文件夹中搜索匹配的命名视图。优先级是更具体的更具体覆盖的情况(即从控制器“Foo”调用的“Do”视图将首先查找Views / Foo / Do.aspx然后查找Views / Shared / Do.aspx)。除了heirarchy首先通过扩展(ascx)然后通过文件夹的特异性进行优先排序,部分原则也是如此。

作为项目的一部分只影响Visual Studio(工具,如“转到视图”,发布属性等)。虽然如果您选择编辑视图,那么它可能会有所不同。

如果您允许人们将文件拖放到View文件夹中,这只是一个安全漏洞,在这种情况下,他们只能覆盖您项目中包含的任何视图。