将标签帮助程序上下文化是什么意思?
((IViewContextAware) _html).Contextualize(ViewContext);
我想了解上面的代码是做什么的?
如果我使用上面的代码会怎样?如果我不这样做怎么办?
答案 0 :(得分:1)
Contextualize()
sets的0
的{{1}}属性被调用的地方。严格来说,您不是在上下文化标签帮助程序,而只是在HtmlHelper。
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show($"You clicked line {listBox1.SelectedIndex + 1}, " +
$"which is: {listBox1.SelectedItem}", "ListBox Selection Changed");
}
封装了有关当前正在执行的视图以及当前正在执行的动作的所有信息(ViewContext
源自IHtmlHelper
)。大多数HtmlHelper方法都取决于ViewContext的设置:例如生成动作链接的方法,因为它包含路由数据或在呈现表单时保持状态。
在执行常规的Razor视图时,MVC将automatically在HTML帮助器上(实际上,在所有ViewContext
实现上)调用ViewContext
。但是,HtmlHelper不是标记助手的默认概念。通过标记帮助器的构造函数将其注入时,它将创建一个新实例,该实例不会与任何视图信息“关联”。因此,您必须手动调用它。
调用需要设置ActionContext
的方法时,将引发异常。
tl; dr :在向标记帮助器中注入Contextualize
时始终调用IViewContextAware
,否则它将无法正常工作。