如何使用Razor创建HtmlHelper扩展?

时间:2011-01-24 01:25:35

标签: asp.net-mvc-3 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)上使用它?

2 个答案:

答案 0 :(得分:1)

助手创建普通页面方法,而不是扩展方法:

@IncludeJS("")

如果您想创建Html扩展方法,则需要为.cs类创建常规扩展方法(在HtmlHelper文件中)。
如果您这样做,则可以使用TagBuilder类。


编辑The Views\Helpers feature was dropped before RTM

答案 1 :(得分:0)

我得到同样的错误,因为我有这个:

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

当我需要时:

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

换句话说,/ Views中的Web.Config中有多个标签,特别是如果你使用的视图引擎比Razor多。如果您希望HtmlHelper扩展显示在cshtml文件中,则需要确保将此行添加到Razor部分。