C# 你能在Asp.NETMVC3中创建一个动态类型的HtmlHelper扩展吗?

C# 你能在Asp.NETMVC3中创建一个动态类型的HtmlHelper扩展吗?,c#,asp.net-mvc-3,razor,C#,Asp.net Mvc 3,Razor,我试图创建一个动态类型的扩展HtmlHelper,但是我得到了一个错误。例如,如果我尝试以下方法: public static string DropDownWithAdder<T>(this HtmlHelper helper) { return "Test Worked"; } 我得到了错误 CS1061: 'System.Web.Mvc.HtmlHelper' 不包含的定义 “DropDownWithAdder”且无扩展名 方法“DropDownWithAdder”接

我试图创建一个动态类型的扩展HtmlHelper,但是我得到了一个错误。例如,如果我尝试以下方法:

public static string DropDownWithAdder<T>(this HtmlHelper helper)
{
    return "Test Worked";
}
我得到了错误

CS1061: 'System.Web.Mvc.HtmlHelper' 不包含的定义 “DropDownWithAdder”且无扩展名 方法“DropDownWithAdder”接受 类型的第一个参数 'System.Web.Mvc.HtmlHelper' 可以找到(你是否缺少一个 使用指令或程序集 参考?)


但是,如果我只是简单地删除它的工作只是罚款。我的问题是,您可以在Html扩展方法中使用泛型类型吗?

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

public static string DropDownWithAdder<T>(this HtmlHelper helper)
{
    return "Test Worked";
}
publicstaticstringdropdownwithadder(此HtmlHelper帮助程序)
{
返回“测试工作”;
}
编辑:

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


@(Html.DropDownWithAdder())

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

public static string DropDownWithAdder<T>(this HtmlHelper helper)
{
    return "Test Worked";
}
publicstaticstringdropdownwithadder(此HtmlHelper帮助程序)
{
返回“测试工作”;
}
编辑:

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

@(Html.DropDownWithAdder())

您可能需要@(Html.DropDownWithAdder()),这样razor就不会将<解释为您可能需要的标记的开始@(Html.DropDownWithAdder()),这样razor就不会将<解释为标记的开始