Pergunta

Estou tentando criar um auxiliar de barbear algo assim:

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

Mas isso dá o erro "CS0103: The name 'Html' does not exist in the current context".

Existe alguma maneira de fazer referência aos ajudantes HTML nos ajudantes da web?

Foi útil?

Solução

Você pode lançar a propriedade da página estática do contexto para o tipo correto:

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

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

Outras dicas

Os ajudantes declarativos em Razor são métodos estáticos. Você pode passar o ajudante HTML como argumento:

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

@DisplayForm(Html)

Webhelper em linha de barbear é gerado método estático.

Portanto, não posso acessar o membro da instância.

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

Que tal agora?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top