Использование HTML помощников в бритве веб-помощника

StackOverflow https://stackoverflow.com/questions/4032490

  •  26-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

Декларативные помощники в бритве являются статическими методами. Вы можете пройти HTML-помощник как аргумент:

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

@DisplayForm(Html)

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top