Использование интерфейса в ASP.NET MVC HTML помощник - PullRequest
1 голос
/ 03 февраля 2011

У меня есть следующий метод:

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.UlList (System.Web.Mvc.HtmlHelper, System.Collections.Generic.List, string) 'содержит недопустимые аргументы

Model.RequiredFields = new List<ProfileRequiredField>();

public class ProfileRequiredField : IEntity
{
    public int Id { get; set; }
    public string Name { get; set; }
}

РЕДАКТИРОВАТЬ Я использую 3,5

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

То, что вы пытаетесь сделать, с List<IEntity> в качестве типа параметра, работает только в .NET 4.0 из-за нового ключевого слова out.

Если вам нужно это для работы в более низких версиях, попробуйте следующее:

public static string UlList<T>(this HtmlHelper helper, List<T> entities, string css)
    where T : IEntity
{
    return "foo";
}

Это заменяет IEntity универсальным аргументом. .NET автоматически разрешит это за вас, поэтому вам не нужно добавлять <ProfileRequiredField> в ваш код.

0 голосов
/ 03 февраля 2011

Убедитесь, что ваш метод расширения находится в пространстве имен System.Web.Mvc, или включите ваше пространство имен в список пространств имен, определенных в файле web.config.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...