¿Cómo se puede ignorar / persisten valores en MVC cuando su vista-modelo no tiene tantos campos como el modelo de dominio?

StackOverflow https://stackoverflow.com/questions/1274575

Pregunta

Tengo un sitio en el que estoy usando fluentNhibernate y Asp.net MVC. Tengo una vista de edición que permite al usuario editar 8 de las 10 propiedades de ese registro (objeto). Cuando envíe el formulario y se une al modelo, los dos campos no editable regresan en la vista-modelo como cadenas vacías o como valores DateTime predeterminados en función del tipo de propiedad.

Debido También estoy usando AutoMapper para mapear mi punto de vista-modelo a mi entidad del dominio, no puedo simplemente cargar una nueva copia de mi objeto a partir de la base de datos y configurar manualmente las 2 propiedades que faltan. ¿Cuál es la mejor manera de persistir aquellos campos que no quiero editar?

Una manera en que funciona es persistir los valores de los campos de entrada ocultos en mi opinión. Eso funciona, pero se siente bruto. Aprecio cualquier recomendación. ¿Hay alguna manera en mi AutoMapper para configurar esta funcionalidad deseada?

ACTUALIZACIÓN: OK, así que supongo que no estoy tratando de hacer caso omiso de los campos, que estoy tratando de asegurarse de que no se conservan los valores de cadena nulos o vacíos. Haciendo caso omiso de los campos en AutoMapper no sólo eso, son ignorados y son nulos cuando intento trazar antes Guardado en mi repositorio.

¿Fue útil?

Solución

El DefaultModelBinder asp.net mvc es extensible, y se puede anularlo para crear su propio esquema de unión. Pero esto implicará más trabajo que dos "campos de entrada ocultos", que, en mi punto de vista, no es tan grave.

Otros consejos

Se puede decir AutoMapper hacer caso omiso de las 2 propiedades:

Mapper.CreateMap<Source, Destination>()
.ForMember(dest => dest.SomeValuefff, opt => opt.Ignore());

Posible pregunta relacionada .

¿Se puede utilizar la sobrecarga de AutoMapper.Map que también acepta TEntity?!

entity = Mapper.Map(viewmodel, entity);

Mientras que usted no tiene las propiedades en el modelo de vista, no va a cambiar los valores en su entidad. Se necesita que la entidad sea aprobada y se aplica sólo a las propiedades del modelo de vista de nuevo a la entidad.

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