Pregunta

Sería útil para limitar el alcance de un aglutinante modelo personalizado por sólo un método de acción del controlador específico o la totalidad de su controlador. Hanselman escribió una frase que implicaba lugares alternativos para el registro de aglutinante modelo personalizado, pero nunca parecía terminar el pensamiento:

  

Puede o bien Carpeta poner este modelo personalizado a cargo de todas sus DateTime mediante su registro en el Global.asax

¿Es posible hacer que estos registros a un menor alcance del sistema de control? Si es así, ¿hay alguna razón para no tener que hacerlo fuera del Global.asax MvcApplication (por ejemplo, razones de rendimiento)?

¿Fue útil?

Solución

A medida que iba a cerrar las pestañas que se abrió para esta pregunta que yo no había alcanzado antes de renunciar, he encontrado alguien con una respuesta . Se puede asignar un ModelBinderAttribute a sus modelos de vista:

[ModelBinder(typeof(SomeEditorModelModelBinder))]
public class SomeEditorModel {
    // display model goes here
}
public class SomeEditorModelModelBinder : DefaultModelBinder {
    // custom model binder for said model goes here
}

A pesar de que no era lo que estaba buscando, es aún más específico que registrarlo para un método de controlador o controlador.

Actualizar

Gracias al comentario de Levi señalando una solución mucho mejor. Si usted está consumiendo el objeto con un aglutinante modelo personalizado en un método de acción directa MVC, puede simplemente decorar parámetro de este método con la propiedad ModelBinder.

public ActionResult SomeMethod([ModelBinder(typeof(SomeEditorModelBinder))]SomeEditorModel model) { ... }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top