2011-01-24 3 views
1

Я видел этот синтаксис:Как создать расширения HtmlHelper с помощью Razor?

@helper IncludeJS(string url) 
{ 
    <script src="@url" type="text/javascript"></script> 
} 

Размещенные на .cshtml файл на Views\Helpers. Но тогда она не распознается на представлениях при использовании либо:

Html.IncludeJS("") 
IncludeJS("") 

И я получаю эту ошибку:

CS1061: 'System.Web.Mvc.HtmlHelper<dynamic>' does not contain a definition for... 

Как я могу создать пользовательское расширение HtmlHelper и использовать его на MVC3 (Razor)?

ответ

1

Помощники создать нормальные методы страницы, а не методы расширения:

@IncludeJS("") 

Если вы хотите создать метод Html расширения, вам необходимо создать нормальный метод расширения (в .cs файле) для HtmlHelper класс.
Если вы это сделаете, вы можете использовать класс TagBuilder.


EDIT: The Views\Helpers feature was dropped before RTM.

+0

Удаление строки 'Html.IncludeJS' Я получаю эту ошибку для' IncludeJS' -> 'CS0103: имя 'IncludeJS' не существует в текущем контексте' – BrunoLM

0

Я получил эту же ошибку, потому что я это:

<system.web> 
    <pages> 
     <namespaces> 
      <add namespace="MyNamespace"/> 

Когда я нуждался в этом:

<system.web.webPages.razor> 
    <pages> 
     <namespaces> 
      <add namespace="MyNamespace"/> 

Другими словами, есть несколько тегов в Web.Config в/Views, особенно если вы используете больше механизмов просмотра, чем Razor. Вам нужно убедиться, что вы добавили эту строку в раздел Razor, если вы хотите, чтобы ваши расширения HtmlHelper отображались в ваших файлах cshtml.

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