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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top