在Razor web helper中使用html帮助器

时间:2010-10-27 11:01:24

标签: asp.net-mvc razor

我正在尝试创建一个像这样的Razor网络助手:

@helper DisplayForm() {    
    @Html.EditorForModel();    
}

但这会产生错误"CS0103: The name 'Html' does not exist in the current context"

有没有办法在网络助手中引用html助手?

3 个答案:

答案 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()
}

这个怎么样?