¿Cómo obtengo la colección de errores en una vista?
No quiero usar el Resumen de validación de ayuda HTML o el Mensaje de validación. En cambio, quiero verificar si hay errores y, si los hay, mostrarlos en un formato específico. También en los controles de entrada quiero verificar un error de propiedad específico y agregar una clase a la entrada.
PD: Estoy usando el Spark View Engine pero la idea debería ser la misma.
Entonces pensé que podría hacer algo como ...
<if condition="${ModelState.Errors.Count > 0}">
DispalyErrorSummary()
</if>
....and also...
<input type="text" value="${Model.Name}"
class="?{ModelState.Errors["Name"] != string.empty} error" />
....
O algo así.
ACTUALIZAR
Mi solución final se veía así:
<input type="text" value="${ViewData.Model.Name}"
class="text error?{!ViewData.ModelState.IsValid &&
ViewData.ModelState["Name"].Errors.Count() > 0}"
id="Name" name="Name" />
Esto solo agrega la clase de error css si esta propiedad tiene un error.
html
asp.net-mvc
validation
spark-view-engine
Ryan Montgomery
fuente
fuente
Respuestas:
o
y para una propiedad específica ...
fuente
Para obtener solo los errores de ModelState, use este Linq:
fuente
Versión condensada de la respuesta de @ ChrisMcKenzie :
fuente
Esto le dará una cadena con todos los errores con separación de comas
fuente
Gracias Chad! Para mostrar todos los errores asociados con la clave, esto es lo que se me ocurrió. Por alguna razón, el asistente base Html.ValidationMessage solo muestra el primer error asociado con la clave.
HtmlHelper:
fuente
Al reunir varias respuestas de lo anterior, esto es lo que terminé usando:
validationErrors
termina siendo unList<string>
mensaje que contiene cada mensaje de error. A partir de ahí, es fácil hacer lo que quieras con esa lista.fuente
Aquí está el VB.
fuente
Si no sabe qué propiedad causó el error, puede, usando la reflexión, recorrer todas las propiedades:
Donde T es el tipo de su "ViewModel".
fuente