2010-12-13 18 views
1

我有一個場景,我將兩個視圖組合成一個共享視圖。ASP.NET被排除的視圖被擊中

排除從項目卻總是被擊中

  • 查看/美孚/ Do.aspx
  • 查看/酒吧/ Do.aspx

存在問題的項目,但從來沒有被擊中

  • Views/Shared/Do.aspx

這些文件仍然存在於源代碼管理中,但它們不再是項目的一部分。

  1. 爲什麼View不再是項目的一部分的優先級高於作爲項目一部分的View?也許我在想MVC做得更多......

  2. 是否MVC只是尋找任何文件,它可以找到匹配,無論它是否是項目的一部分?

  3. 這是否是一個潛在的安全漏洞,如果您可以使用正確的名稱刪除文件,即使它不是項目的一部分?

回答

2

答案2是正確的。 MVC將在視圖文件夾中搜索匹配的命名視圖。優先級是一個更具體的覆蓋更普遍的情況(即從控制器「Foo」調用的「Do」視圖將首先查找Views/Foo/Do.aspx,然後查找Views/Shared/Do.aspx)。對於部分來說也是如此,除了首先通過擴展(ascx)的優先級優先級,然後是文件夾的特殊性。

作爲項目的一部分隻影響Visual Studio(諸如「去查看」,發佈屬性等工具)。雖然如果您選擇編譯視圖,那麼它可能會有所作爲。

這只是一個安全漏洞,如果你允許人們將文件放入你的View文件夾,在這種情況下,他們可能只是覆蓋你包含在你的項目中的任何視圖。