Контекстуализация в теге помощника - PullRequest
0 голосов
/ 10 января 2019

Что значит контекстуализировать помощник по тегам?

((IViewContextAware) _html).Contextualize(ViewContext);

Я пытаюсь понять, что делает приведенный выше код?

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

Ссылка

1 Ответ

0 голосов
/ 10 января 2019

Contextualize() устанавливает свойство ViewContext для IHtmlHelper, где вызывается метод. Строго говоря, вы не контекстуализируете помощника по тегам, просто HtmlHelper.

ViewContext инкапсулирует всю информацию о текущем выполняемом представлении, а также о текущем выполняемом действии (поскольку ViewContext происходит от ActionContext). Большинство методов HtmlHelper зависит от устанавливаемого ViewContext: например, методов, генерирующих ссылки действий, так как они содержат данные маршрута или для сохранения состояния при визуализации формы.

MVC автоматически вызовет Contextualize для HTML-помощника (фактически, для всех реализаций IViewContextAware) при выполнении обычного представления Razor. Однако HtmlHelper не является концепцией по умолчанию для помощников тегов. Когда вы внедряете его через конструктор помощника по тегам, он создает новый экземпляр, который не «контекстуализируется» какой-либо информацией о представлении. Поэтому вы должны вызвать его вручную.

Исключение будет выдано при вызове метода, для которого требуется установить ViewContext.

tl; dr : всегда вызывайте Contextualize при введении IHtmlHelper в ваш помощник тегов, иначе он не будет работать должным образом.

...