Tuve este problema una vez y no lo resolví. Tengo una lista (generados en un controlador MVC3):'objeto' no contiene una definición para 'X'
ViewBag.Languages = db.Languages
.Select(x => new { x.Name, x.EnglishName, x.Id })
.ToList();
y en mi página (Razor) Trato de iterar a través de él:
foreach (var o in ViewBag.Languages)
{
string img = "Lang/" + o.EnglishName + ".png";
@* work *@
}
pero la referencia a o.EnglishName
falla con el error:
'object' does not contain a definition for 'EnglishName'
aunque lo curioso es que si escribo en la ventana Inmediato (mientras depuración):
o { Name = བོད་སྐད་, EnglishName = Tibetan, Id = 31 } EnglishName: "Tibetan" Id: 31 Name: "བོད་སྐད་"
por lo que obviamente el campo está ahí. ¿Cuál es mi problema aquí?
wow. respuesta increíble (+1 por eso). muchas gracias, y sí, estoy en el proceso de eliminar todas las referencias al ViewBag a favor de los modelos de vista ... – ekkis
muy bien, pero a veces podemos necesitar ViewBags. Solo podemos pasar un modelo a una vista. Sin embargo, es posible que deseemos enviar otra recopilación de datos pequeños, ¿no? y en este caso, es más fácil enviar esa pequeña recopilación de datos con ViewBags. Por supuesto, también puedes enviarlo con PartialViews. No sé si hay otras recomendaciones. – oneNiceFriend