Использование html-помощников в веб-помощнике Razor

Я пытаюсь создать веб-помощник Razor следующим образом:

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

Но это дает ошибку "CS0103: The name 'Html' does not exist in the current context".

Есть ли способ ссылаться на html-помощники в веб-помощниках?

Ответы

Ответ 1

Вы можете использовать статическое свойство страницы из контекста в правильный тип:

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

    Html.RenderPartial("WhatEver");
    @Html.EditorForModel();
}

Ответ 2

Декларативные помощники в Razor являются статическими методами. Вы можете передать хелпер Html в качестве аргумента:

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

@DisplayForm(Html)

Ответ 3

Razor inline WebHelper генерирует статический метод.

Поэтому не удается получить доступ к экземпляру экземпляра.

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

Как насчет этого?