Я не уверен, что точно следую тому, что вы пытаетесь сделать, но если ваше представление использует значения в маршруте для отображения определенной информации, кажется, что добавление ваших собственных методов расширения для HtmlHelper было бы лучшим способом идти.
Содержатся ли имя, язык и категория в ваших маршрутах? Если это так, то HtmlHelper будет иметь доступ к информации о маршруте и сможет определить, что отображать с помощью методов расширения. Какова взаимосвязь между вашими маршрутами и что ваши взгляды должны знать?
Обновление: Является ли lang
частью вашего маршрута? Если это так, то я все равно буду утверждать, что вы могли бы написать метод расширения HtmlHelper, который непосредственно смотрит на данные маршрута и определяет, какое частичное представление следует визуализировать. Таким образом, вашему контроллеру даже не нужно будет беспокоиться об установке ViewData ["lang"]. Представление всегда будет знать, как выполнить рендеринг на основе маршрута.
Обновление 2: Я думаю, что отказ от использования метода расширения HtmlHelper
, поскольку он переоценивает данные маршрута, может быть причиной преждевременной оптимизации. Ваша схема наследования контроллера кажется слишком сложной, и вы задали вопрос, потому что способ установки ViewData
был ненадежным. Я сомневаюсь, что извлечение значения из данных маршрута было бы намного, если таковые имеются, менее эффективным, чем установка и чтение из ViewData
.
Из вашего комментария:
В контроллере я использую значение lang
определить, какой вид показывать как
хорошо.
Это только заставляет меня думать, что есть больше частей вашей системы, которые мне нужно было бы увидеть, чтобы дать лучший совет. Если у вас есть отдельные представления для каждого языка, тогда почему представлению необходимо указать, какой язык использовать?
Другой альтернативой для рассмотрения было бы использование вложенных главных страниц. У вас может быть одна главная страница для макета сайта, а затем вложенная главная страница для каждого языка, которая содержит только жестко запрограммированное значение языка.