【发布时间】:2019-01-10 18:15:09
【问题描述】:
将标签助手上下文化是什么意思?
((IViewContextAware) _html).Contextualize(ViewContext);
我想了解上面的代码是做什么的?
如果我使用上面的代码会发生什么?如果我不这样做会怎样。
【问题讨论】:
标签: c# asp.net-core tag-helpers
将标签助手上下文化是什么意思?
((IViewContextAware) _html).Contextualize(ViewContext);
我想了解上面的代码是做什么的?
如果我使用上面的代码会发生什么?如果我不这样做会怎样。
【问题讨论】:
标签: c# asp.net-core tag-helpers
Contextualize() sets ViewContext 的属性 IHtmlHelper where 方法被调用。严格来说,您没有将标签助手上下文化,只是 HtmlHelper。
ViewContext 封装了有关当前正在执行的视图以及当前正在执行的操作的所有信息(因为ViewContext 派生自ActionContext)。大多数 HtmlHelper 方法都依赖于设置的 ViewContext:例如在包含路由数据时生成操作链接或在呈现表单时保持状态的方法。
当执行常规 Razor 视图时,MVC 将在 HTML 帮助器(实际上,在所有 IViewContextAware 实现上)上调用 automatically Contextualize。然而,HtmlHelper 并不是标签助手的默认概念。当您通过标签助手的构造函数注入它时,它将创建一个新实例,该实例不具有任何视图信息“上下文化”。因此,您必须手动调用它。
调用需要设置ViewContext的方法时会抛出异常。
tl;dr:在标签助手中注入 IHtmlHelper 时始终调用 Contextualize,否则将无法正常工作。
【讨论】: