Использование помощников HTML в веб-помощнике Razor - PullRequest
14 голосов
/ 27 октября 2010

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

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

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

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

Ответы [ 3 ]

22 голосов
/ 25 ноября 2010

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

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

    Html.RenderPartial("WhatEver");
    @Html.EditorForModel();
}
4 голосов
/ 27 октября 2010

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

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

@DisplayForm(Html)
1 голос
/ 27 октября 2010

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

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

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

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

...