Asp.net mvc 2 正在命中ASP.NET排除的视图

Asp.net mvc 2 正在命中ASP.NET排除的视图,asp.net-mvc-2,Asp.net Mvc 2,我有一个场景,将两个视图合并为一个共享视图 从项目中排除,但总是受到影响 Views/Foo/Do.aspx 视图/Bar/Do.aspx 存在于项目中,但从未被击中 Views/Shared/Do.aspx 这些文件仍然存在于源代码管理中,但它们不再是项目的一部分 为什么不再是项目一部分的视图优先于作为项目一部分的视图?也许我认为MVC比它做的更多 MVC是否只是查找任何它可以找到的匹配文件,而不管它是项目的一部分 如果您可以使用正确的名称将文件放入其中,即使它不是项目的一部分,这是否

我有一个场景,将两个视图合并为一个共享视图

从项目中排除,但总是受到影响

  • Views/Foo/Do.aspx
  • 视图/Bar/Do.aspx
存在于项目中,但从未被击中

  • Views/Shared/Do.aspx
这些文件仍然存在于源代码管理中,但它们不再是项目的一部分

  • 为什么不再是项目一部分的视图优先于作为项目一部分的视图?也许我认为MVC比它做的更多

  • MVC是否只是查找任何它可以找到的匹配文件,而不管它是项目的一部分

  • 如果您可以使用正确的名称将文件放入其中,即使它不是项目的一部分,这是否是一个潜在的安全缺陷


  • 答案2是正确的。MVC将在视图文件夹中搜索匹配的命名视图。优先级取决于更具体、更一般的覆盖情况(即从控制器“Foo”调用的“Do”视图将首先查找Views/Foo/Do.aspx,然后查找Views/Shared/Do.aspx)。这同样适用于分部,除了继承人优先权首先通过扩展(ascx),然后通过文件夹的特殊性

    作为项目的一部分只会影响VisualStudio(例如“转到视图”、发布属性等工具)。尽管如果选择使用编译视图,可能会有所不同

    如果您允许人们将文件放入您的视图文件夹,那么这只是一个安全缺陷,在这种情况下,他们可能会覆盖您在项目中包含的任何视图