Me estoy confundido por este problema y no estoy seguro si es mi falta de comprensión del marco MVC, el marco .NET, o qué. Pero aquí se apreciará alguna explicación desde cualquier rincón.propiedad interfaz heredados no se encontró por modelo de unión
Lo que estoy tratando de hacer: utilizar ASP.NET MVC3 modelo de unión para hacer controles HTML en una vista. Específicamente, estoy intentando vincularme a una interfaz en lugar de a una clase concreta.
El error: un ArgumentException "La propiedad [bla] no se puede conocer." se lanza durante la carga de la página.
El código:
Interface IFoundation
{
int Id { get; set; }
}
Interface IChild: IFoundation
{
string Name { get; set; }
}
Class Concrete: IChild
{
int Id { get; set; }
string Name { get; set; }
}
La vista:
@model IChild
@Html.EditorFor(x => x.Id)
Cuando intento cargar la vista, un ArgumentException se lanza desde la llamada a EditorFor() que indica que la propiedad del ID no puede encontró. Sin embargo, si me uniera a la clase Concrete, el enlace funciona bien.
Así que ¿alguien sabe por qué EditorFor() no sería capaz de resolver la propiedad heredada de la interfaz de base?
Trate de usar una clase abstracta. – wnascimento
Eso es lo que comencé a hacer: escribir clases abstractas que implementen mis interfaces. Mis clases concretas pueden heredar y anular los resúmenes y (actualmente) tengo mis vistas vinculantes para los resúmenes también. No estoy seguro de si el enlace a las clases base abstractas va a funcionar para las vistas en el largo plazo: Kaleb a continuación sugiere implementar clases de ViewModel para el enlace. Soy reacio a comenzar ese camino en este momento, pero eventualmente puedo terminar allí. –
El consejo de Kaleb es excelente, Automapper/ViewModels es una buena opción. – wnascimento