Частичное представление MVC2 создает / перехватывает исключения при разрешении пути к представлению - PullRequest
0 голосов
/ 19 августа 2010

Во время отладки моего решения Visual Studio 2010 MVC2 я заметил то, чего не ожидал, и которое показалось мне неэффективным. Когда я просматривал домашнюю страницу, IntelliTrace показывал, что при исключении частичного просмотра возникало и возникало много исключений.

У меня есть код, который вызывает частичное представление следующим образом:

<% Html.RenderPartial("FiltersAvailablePartialView", Model.AvailableFilters); %>

Структура представлений в проекте соответствует типичному приложению MVC. Существует папка Views, которая содержит две папки: Home и Shared. В домашней папке у меня есть страница .aspx, которая используется в качестве моей главной страницы просмотра, а в общей папке у меня есть страница .ascx, которая используется как частичное представление, как показано ниже (с другими видами и частичными представлениями нет в списке). для простоты):

Просмотры

-> Главная

-> Home.aspx

-> Общий

-> FiltersAvailablePartialView.ascx

Когда я загружаю страницу, я вижу в IntelliTrace, что эти исключения генерируются и перехватываются:

Брошено: "Файл '/MyApp/Views/Home/FiltersAvailablePartialView.aspx' не существует."

Поймано: «Файл '/MyApp/Views/Home/FiltersAvailablePartialView.aspx' не существует."

Брошено: "Файл '/MyApp/Views/Home/FiltersAvailablePartialView.ascx' не существует."

Поймано: «Файл '/MyApp/Views/Home/FiltersAvailablePartialView.ascx' не существует."

Брошено: "Файл '/MyApp/Views/Shared/FiltersAvailablePartialView.aspx' не существует".

Поймано: «Файл '/MyApp/Views/Shared/FiltersAvailablePartialView.aspx' не существует."

Таким образом, похоже, что .Net Framework использует дорогие методы try / catch для разрешения представления - сначала ищет представление .aspx в папке Home, затем - представление .ascx в папке Home, затем для представление .aspx в общей папке, а затем представление .ascx в общей папке. Таким образом, хотя он в конечном итоге находит частичное представление и страница отображается без каких-либо ошибок, это выглядит как дорогой способ (перехват исключений) найти представление.

Есть ли что-то встроенное в инфраструктуру MVC2, которую я мог / должен сделать, чтобы он разрешил эту частичную ссылку на представление с первой попытки и избежал этих дорогостоящих вызовов try / catch, которые происходят?

1 Ответ

3 голосов
/ 19 августа 2010

Если вы компилируете в режиме Release, это происходит только один раз.Если вы компилируете в режиме отладки, это происходит для каждого запроса.

Профилирование в режиме отладки часто имеет очень ограниченное отношение к реальной производительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...