Я пытаюсь создать веб-помощник Razor примерно так:
@helper DisplayForm() { @Html.EditorForModel(); }
Но это выдает ошибку "CS0103: The name 'Html' does not exist in the current context".
"CS0103: The name 'Html' does not exist in the current context"
Есть ли способ ссылаться на помощников HTML в сетихелперы?
Вы можете преобразовать статическое свойство Page из контекста в правильный тип:
@helper MyHelper() { var Html = ((System.Web.Mvc.WebViewPage)WebPageContext.Current.Page).Html; Html.RenderPartial("WhatEver"); @Html.EditorForModel(); }
Декларативные помощники в Razor - это статические методы. Вы можете передать Html-помощник в качестве аргумента:
@helper DisplayForm(HtmlHelper html) { @html.EditorForModel(); } @DisplayForm(Html)
Razor inline WebHelper генерирует статический метод.
Поэтому не может получить доступ к элементу экземпляра.
@helper DisplayForm(HtmlHelper html){ @html.DisplayForModel() }
Как насчет этого?