14

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

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

但这给出了错误"CS0103: The name 'Html' does not exist in the current context"

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

4

3 回答 3

23

您可以将静态 Page 属性从上下文转换为正确的类型:

@helper MyHelper() {
    var Html = ((System.Web.Mvc.WebViewPage)WebPageContext.Current.Page).Html;

    Html.RenderPartial("WhatEver");
    @Html.EditorForModel();
}
于 2010-11-25T14:31:35.553 回答
4

Razor 中的声明式助手是静态方法。您可以将 Html 助手作为参数传递:

@helper DisplayForm(HtmlHelper html) {
    @html.EditorForModel(); 
}

@DisplayForm(Html)
于 2010-10-27T16:08:33.673 回答
1

Razor 内联 WebHelper 是生成静态方法。

所以不能访问实例成员。

@helper DisplayForm(HtmlHelper html){
    @html.DisplayForModel()
}

这个怎么样?

于 2010-10-27T16:03:42.640 回答