Passando um modelo de vista a classe auxiliar
-
05-07-2019 - |
Pergunta
Eu gostaria de exibir uma nuvem de tags no meu aplicativo de teste usando uma classe auxiliar para criar o html.
Eu posso usar um para cada loop na vista parcial para visitar cada item no modelo
Inherits="System.Web.Mvc.ViewUserControl < IEnumerable < MyTestproject.Models.TagCount > >
foreach (var item in Model) {
}
Mas quando eu tento passar o modelo para a classe Helper e usar um para cada loop eu recebo o seguinte erro:
public static string DisplayCloud < TagCount >(TagCount objTags) {
..
foreach (var item in objTags) {
}
}
instrução foreach não pode operar em variáveis ??do tipo 'TagCount' porque 'TagCount' não contém uma definição pública para 'GetEnumerator'
Qual é a diferença ou estou passando incorretamente?
Solução
Porque você está passando um tipo diferente.
A visão está ficando IEnumerable<TagCount>
O auxiliar está ficando TagCount
As suas necessidades de código auxiliar a ser:
public static string DisplayCloud(IEnumerable<TagCount> objTags) {
..
foreach (var item in objTags) {
}
}
O tipo genérico do método parece inútil / ilegal, já que é um tipo real, então eu removido-lo, bem como a fixação do tipo de argumento.
Outras dicas
Olhe mais de perto a diferença entre a assinatura classe do seu ponto de vista e assinatura do seu método auxiliar:
Inherits = "System.Web.Mvc.ViewUserControl << strong> IEnumerable
> public static string DisplayCloud
(TagCount objTags)
O método necessidades para receber um IEnumerable<TagCount>
, a fim de foreach chamada.