C# 在ASP.NET MVC html帮助程序上使用接口

C# 在ASP.NET MVC html帮助程序上使用接口,c#,asp.net-mvc-2,C#,Asp.net Mvc 2,我有以下方法: public static string UlList(this HtmlHelper helper, List<IEntity> entities, string css) { return "foo"; } 但是当我尝试调用该方法时 <%= Html.UlList(Model.ProfileRequiredFields, css)%> 我得到: 编译器错误消息:CS1928:“System.Web.Mvc.HtmlHelper”不包含“Ul

我有以下方法:

public static string UlList(this HtmlHelper helper, List<IEntity> entities, string css)
{
    return "foo";
}
但是当我尝试调用该方法时

<%= Html.UlList(Model.ProfileRequiredFields, css)%>
我得到:

编译器错误消息:CS1928:“System.Web.Mvc.HtmlHelper”不包含“UlList”的定义,而最佳扩展方法重载“System.Web.Mvc.HtmlHelpers.UlListSystem.Web.Mvc.HtmlHelper,System.Collections.Generic.List,string”具有一些无效参数

编辑
我使用的是3.5

请确保您的扩展方法位于System.Web.Mvc命名空间中,或者将您的命名空间包含在Web.config文件中定义的命名空间列表中。

由于新的out关键字,您尝试使用list作为参数类型的操作仅在.NET 4.0中有效

如果需要在较低版本中使用此功能,请尝试以下操作:


这将用泛型参数替换IEntity。NET将自动为您解决此问题,因此您不必添加代码。

-1否。编译器已经看到了该方法,否则它不会检测到参数不正确。扣除一个点有点老生常谈。这是一个完全有效的检查。据您所知,可能有多个版本的扩展在不同的名称空间中编写。好的,所以我不能使用这是Net 3.5。它实际上不需要是一个扩展方法。不,在3.5中不能使用List。以上带有泛型的代码专门用于在3.5中实现此功能:。澄清了答案。
Model.RequiredFields = new List<ProfileRequiredField>();

public class ProfileRequiredField : IEntity
{
    public int Id { get; set; }
    public string Name { get; set; }
}
public static string UlList<T>(this HtmlHelper helper, List<T> entities, string css)
    where T : IEntity
{
    return "foo";
}