Pregunta

Me gustaría mostrar una nube de etiquetas en mi aplicación de prueba usando una clase auxiliar para crear el html.

Puedo usar un para cada ciclo en la vista parcial para visitar cada elemento en el modelo

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

foreach (var item in Model) {

}

Pero cuando trato de pasar el modelo a la clase Helper y uso un para cada ciclo, recibo el siguiente error:

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

..
       foreach (var item in objTags) {

       }
}

la instrucción foreach no puede operar en variables de tipo 'TagCount' porque 'TagCount' no contiene una definición pública para 'GetEnumerator'

¿Cuál es la diferencia o la estoy pasando incorrectamente?

¿Fue útil?

Solución

Porque estás pasando un tipo diferente.

La vista se está volviendo IEnumerable<TagCount>

El ayudante está obteniendo TagCount

Su código de ayuda debe ser:

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

..
       foreach (var item in objTags) {

       }
}

El tipo genérico en el método parece inútil / ilegal, ya que es un tipo real, así que lo eliminé, así como para corregir el tipo de argumento.

Otros consejos

Mire más de cerca la diferencia entre la firma de clase de su vista y la firma de su método auxiliar:

  

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

     

cadena estática pública DisplayCloud < TagCount > (TagCount objTags)

El método debe recibir un IEnumerable<TagCount> para llamar a foreach.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top