Передача модели представления в класс помощника - PullRequest
0 голосов
/ 21 октября 2009

Я хотел бы отобразить облако тегов в моем тестовом приложении, используя вспомогательный класс для создания HTML.

Я могу использовать для каждого цикла в частичном представлении, чтобы посетить каждый элемент в модели

Inherits="System.Web.Mvc.ViewUserControl < IEnumerable < MyTestproject.Models.TagCount > >

foreach (var item in Model) {

}

Но когда я пытаюсь передать модель в класс Helper и использовать a для каждого цикла, я получаю следующую ошибку:

public static string DisplayCloud < TagCount >(TagCount objTags) {

..
       foreach (var item in objTags) {

       }
}

оператор foreach не может работать с переменными типа «TagCount», поскольку «TagCount» не содержит общедоступного определения для «GetEnumerator»

В чем разница или я неправильно ее передаю?

Ответы [ 2 ]

1 голос
/ 21 октября 2009

Посмотрите внимательнее на разницу между сигнатурой класса вашего представления и подписью вашего вспомогательного метода:

Inherits = "System.Web.Mvc.ViewUserControl <<strong> IEnumerable >

публичная статическая строка DisplayCloud (TagCount objTags)

Метод должен получить IEnumerable<TagCount> для вызова foreach.

1 голос
/ 21 октября 2009

Потому что вы передаете другой тип.

Вид становится IEnumerable<TagCount>

Помощник получает TagCount

Ваш код помощника должен быть:

public static string DisplayCloud(IEnumerable<TagCount> objTags) {

..
       foreach (var item in objTags) {

       }
}

Универсальный тип в методе кажется бесполезным / недопустимым, поскольку это фактический тип, поэтому я удалил его, а также исправил тип аргумента.

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