Demasiado a menudo me he encontrado con una situación en la que una vista en mi proyecto arroja una excepción de referencia nula .Vistas MVC3: Manejo de modelos nulos con finesse
@model Johnny.Application.TestModel
<div>@(Model.SomeText)</div>
Esto arroja un error si Modelo es nula .
Pero, ¿cómo está la gente manejando esto? Ciertamente no veo ejemplos de códigos en todas partes con feos chequeos nulos que ensucian el código en la vista. Eso me lleva a creer que la mayoría de las veces, los controladores no deben devolver modelos nulos. Pero, ¿cómo puedes hacer cumplir esto con más delicadeza?
En este momento tan pronto como alguien hace accidentalmente que un controlador devuelva un modelo nulo, el modelo de vista explota y parece fallar. En realidad, fue culpa del controlador. Y la vista puede que ni siquiera "capte" el problema, solo lo hará si los miembros del modelo se acostumbran (lo cual es la mayoría de las veces, por supuesto).
Por varias razones, algunas vistas pueden querer manejar valores nulos. Sin embargo, no esperaría que este fuera el caso de la mayoría. Claramente, esta es la cuestión de establecer algún "contrato" entre la vista y el controlador.
No me gustan las opciones que he visto:
- Comprobar si el modelo es nulo cada vez que se usa. Muy cojo!
- Uno grande si la declaración ajusta toda la vista con un modelo nulo check. Piensa en el código desperdiciado de bienes raíces. ¡Cojo!
- Agregue si lo controla con un tiro en la parte superior. No está mal, pero parece tonto. Levemente cojo
Me gustaría saber si algo así existiera estas opciones para configurar el "no nulos" contrato:
- Un atributo del método de controlador como [NoNullModels]. Dudo que esto exista, ya que no creo que el controlador sepa a qué vista se está conectando.
- En la vista, como un indicador @ MVC3.HeyDontAllowNulls o alguna otra forma estándar de lanzar una excepción (como opción 3 anterior)
¿por qué incluso devolvería un modelo nulo? –
ha intentado '@ Html.DisplayFor (m => m.SomeText)' –
En el tema de muestra de código, el 99% de los ejemplos de código en Internet carecen de manejo de excepción y validación de entrada. En parte por holgazanería y en parte porque confundiría el punto que la muestra del código está ilustrando. –