2010-12-13 3 views
1

У меня есть сценарий, в котором я объединил два вида в один общий вид.ASP.NET Excluded View Being Hit

не исключен из проекта, но всегда получает удар

  • Просмотров/Foo/Do.aspx
  • Views/Бар/Do.aspx

EXISTS в проекте, но никогда не получает удар

  • Виды/Общие/Do.aspx

Файлы все еще существуют в исходном управлении, но они больше не являются частью проекта.

  1. Почему у View, который больше не является частью проекта, есть приоритет над представлением, являющимся частью проекта? Возможно, я думаю, что MVC делает больше, чем это делает ...

  2. Подходит ли MVC к любому файлу, который он может найти, который соответствует независимо от того, является ли он частью проекта?

  3. Является ли это потенциальным недостатком безопасности, если вы можете оставить файл там с правильным именем, даже если он не является частью проекта?

ответ

2

Ответ 2 верен. MVC будет выполнять поиск в папках представления для сопоставленного имени. Приоритет в случае более специфических переопределений более общий (т. Е. Представление «Do», вызванное с контроллера «Foo», сначала будет искать Views/Foo/Do.aspx, а затем искать Views/Shared/Do.aspx). То же самое верно для частичных, за исключением того, что иерархия сначала приостанавливает расширение (ascx), а затем специфичность папки.

Участие в проекте влияет только на Visual Studio (такие инструменты, как «перейти на просмотр», свойства публикации и т. Д.). Хотя, если вы захотите составить компилируемые представления, это может иметь значение.

Это только недостаток безопасности, если вы позволяете людям просто отбрасывать файлы в ваши папки «Просмотр», и в этом случае они могли бы просто перезаписать все виды, которые вы включили в свой проект.