2011-01-19 20 views
5

Siento que me falta algo básico aquí.Propiedad de la interfaz raíz no accesible a través de la interfaz principal en Html helper

Tengo 2 interfaces. Uno se llama IIdentificable que especifica la existencia de una propiedad Id. El segundo realmente puede ser cualquier cosa que también sea identificable. Vea el código a continuación.

public interface IIdentifiable 
{ 
    Guid Id { get; set; } 
} 
public interface IPerson : IIdentifiable 
{ 
    string Name { get; set; } 
} 

El problema:

Cuando se utiliza el Html.HiddenFor (o cualquier otro método de ayuda) y el modelo es fuertemente tipado a la interfaz IPerson, consigo un error cuando se accede a las propiedades de la Interfaz IIdentificable. Puedo acceder y mostrar los datos en las propiedades de IIdentificable yendo directamente contra Model.Id, pero no cuando uso la expresión lambda y accedo al modelo de esa manera.

El error que recibo es "No se pudo encontrar la propiedad * .IPerson.Id".

Esto solo parece ser el caso cuando se utiliza el motor Razor view. Sé que esto funcionaba con ASP.NET MVC 2 y el motor de visualización de WebForms. Todavía no lo he probado en ASP.NET MVC 3 utilizando el motor de visualización de WebForms.

Respuesta

2

Sí, I have brought this a la atención de Microsoft abriendo un ticket. También vea this related question.

+0

¡Gracias! Busqué esto, pero nunca me encontré con ellos. Iba a buscar la fuente hoy si no recibía una respuesta. Lo aprecio. Ahora esperemos que Microsoft se dirija al problema. –

0

Siempre me siento menos loco cuando otras personas tienen los mismos problemas que yo. Como alguien dijo en el enlace proporcionado por Darin, este es un trabajo alrededor o ahora:

<%: Html.HiddenFor(m => (m as IIdentifiable).Id) %> 
Cuestiones relacionadas