你能在Asp.Net MVC 3中创建一个动态类型的HtmlHelper扩展吗?

nas*_*ski 0 c# razor asp.net-mvc-3

我试图创建一个动态类型扩展HtmlHelper,但我收到并错误.例如,如果我试试这个:

public static string DropDownWithAdder<T>(this HtmlHelper helper)
{
    return "Test Worked";
}
Run Code Online (Sandbox Code Playgroud)

这在视图中:

@Html.DropDownWithAdder<Code>()
Run Code Online (Sandbox Code Playgroud)

我收到了错误

CS1061:'System.Web.Mvc.HtmlHelper'不包含'DropDownWithAdder'的定义,并且没有扩展方法'DropDownWithAdder'接受类型'System.Web.Mvc.HtmlHelper'的第一个参数可以找到(你错过了吗?使用指令或程序集引用?)

但是,如果我只是删除<T>它就可以了.我的问题是你可以在Html扩展方法中使用泛型类型吗?

Mar*_*oth 5

扩展方法需要将Html辅助对象作为其第一个参数

public static string DropDownWithAdder<T>(this HtmlHelper helper)
{
    return "Test Worked";
}
Run Code Online (Sandbox Code Playgroud)

编辑:

您还需要用括号括起调用以防止Razor将<解释为html标记的开头:

@(Html.DropDownWithAdder())