2015-09-03 2 views
1

Мы написали метод расширения бритвы, чтобы использовать его в представлении vbhtml, которые делают переводы статических, неперечисленных, не сгенерированных элементов, т.е. заголовков, статических элементов навигации и т. Д.:«Lazy» MVC5 Выполнение бритвы - ASP.NET (оптимизация)

<h1>@Html.GetTagText("aaa"(real string), cultureCode, translationContext)</h1> 

с этой идеей мы генерируем X-вызовы DB, каждый раз, когда мы вызываем этот метод.

Вопрос: Есть ли событие, поднятый Razor Engine, прежде чем преобразовать и после преобразования или somekind из EntryPoint на странице жизненного цикла ASP.NET (до визуализации, после визуализации), который позволит нам:

  1. Collect все getTagText звонков в список
  2. сделать остальную часть бритвы работы
  3. вернуть все переводы в одном DB стрелять
  4. пут/заменить правильные переводы в правильные места

или, может быть, я думаю, что это не так, и бритва не является хорошим местом для такого рода «магии»? Мне нужна общая идея, что-то, что я напишу один раз, чтобы не воспроизводить это в каждом контроллере.

+2

Замечание: в общем случае плохая идея делать медленные синхронные вызовы ввода-вывода из представления ... и вы не можете делать асинхронные вызовы из представления до ASP.NET MVC6 (2016) - см. Информацию о [MVC6 - просмотреть компоненты] (http://www.asp.net/vnext/overview/aspnet-vnext/vc). –

ответ

3

Я предлагаю вам обрабатывать такие работы в контроллере. Создайте модель представления, где вы можете разместить переведенный текст для полей, которые вам нужно перевести, и заполнить модель представления в контроллере.

Я не думаю, что есть какие-либо события, поднятые MVC-представлением. Я попытался подключиться к этим событиям, чтобы измерить время рендеринга страницы и не смог найти таких крючков.

+0

Хорошо, @steve Mallory, так что не возражаете, чтобы быть более конкретным. В вашем подходе я должен написать somekind главного контроллера и вывести все контроллеры из этого parrent TranslationController и проанализировать представления как строку? – Lightning3

+1

@ Lightning3 Ну, это вопрос стиля, но я бы сказал, что если каждый контроллер будет делать перевод, тогда имеет смысл написать базовый контроллер для обработки этой работы. Тем не менее, я бы, вероятно, написал класс-помощник, очень похожий на ваш метод GetTagText() и использовал этот класс в моих контроллерах. –

Смежные вопросы