2010-10-27 3 views

ответ

22

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

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

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

Спасибо, работал на меня. Теперь кто-нибудь может ответить на вопрос, почему существует версия 'System.Web.WebPages.Html.HtmlHelper'? –

+6

Вы всегда можете добавить это в верхней части файла: '@Functions { общественности статической System.Web.Mvc.HtmlHelper Html = ((System.Web.Mvc.WebViewPage) WebPageContext.Current.Page) .html ; } ' Учитывая, что вы можете использовать' @ Html', как и везде. –

1

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

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

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

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

4

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

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

@DisplayForm(Html) 
+0

Когда я пытаюсь это, я получаю ошибку «CS1061:«System .Web.WebPages.Html.HtmlHelper 'не содержит определения для «EditorForModel» и не используется метод расширения «EditorForModel», принимающий первый аргумент типа «System.Web.WebPages.Html.HtmlHelper» (вы не видите используя директиву или ссылку на сборку?) « – Craig

+0

Это потому, что ваше представление должно быть строго типизировано:' @model MyNs.Models.FooViewModel'. –

Смежные вопросы