我正在尝试创建一个像这样的Razor网络助手:
@helper DisplayForm() {
@Html.EditorForModel();
}
但这会产生错误"CS0103: The name 'Html' does not exist in the current context"
。
有没有办法在网络助手中引用html助手?
答案 0 :(得分:22)
您可以将上下文中的静态Page属性强制转换为正确的类型:
@helper MyHelper() {
var Html = ((System.Web.Mvc.WebViewPage)WebPageContext.Current.Page).Html;
Html.RenderPartial("WhatEver");
@Html.EditorForModel();
}
答案 1 :(得分:4)
Razor中的声明性助手是静态方法。您可以将Html帮助程序作为参数传递:
@helper DisplayForm(HtmlHelper html) {
@html.EditorForModel();
}
@DisplayForm(Html)
答案 2 :(得分:1)
Razor内联WebHelper是生成静态方法。
因此无法访问实例成员。
@helper DisplayForm(HtmlHelper html){
@html.DisplayForModel()
}
这个怎么样?