Передача модели представления в вспомогательный класс

StackOverflow https://stackoverflow.com/questions/1601680

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

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

foreach (var item in Model) {

}

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

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

..
       foreach (var item in objTags) {

       }
}

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

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

Это было полезно?

Решение

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

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

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

Ваш вспомогательный код должен быть:

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

..
       foreach (var item in objTags) {

       }
}

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

Другие советы

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

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

общедоступная статическая строка DisplayCloud<TagCount>(TagCount objTags)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top