Estoy desarrollando una validación del lado del cliente y del lado del servidor para una cierta propiedad de viewModel.ValidationMessageFor junto con AddModelError (clave, mensaje). Cual es la clave?
En el archivo .cshtml
pongo esto:
@Html.DropDownListFor(model => model.EntityType.ParentId, Model.ParentTypeList, "")
@Html.ValidationMessageFor(model => model.EntityType.ParentId)
en el controlador para la validación de negocios
catch (BusinessException e)
{
ModelState.AddModelError("EntityType.ParentId", Messages.CircularReference);
}
lo anterior funciona como se esperaba: si se detecta una excepción, el mensaje aparece al lado de la lista desplegable.
Sin embargo, me parece que esta manera no es muy elegante. En el cshtml
, utilizo un método para generar toda la información requerida sobre la validación. En el controlador, debo conocer la cadena clave exacta y usarla.
¿No hay una mejor manera de hacerlo?
Este enlace proporciona alguna adicional visión y una forma de no hacer referencia a la clave directamente como una cadena, sino como una expresión: http://stackoverflow.com/questions/11090445/how-to-get-a-modelstate-key-of-an-item-in- a-list aquí hay otro recurso ce que proporcionan un método de envoltura para la clave Expression http://stackoverflow.com/questions/8793799/get-reference-to-object-from-c-sharp-expression – bUKaneer