ValidationSummary designable avec asp.net mvc

La methode d’extension Html.ValidationSummary() est certe pratique mais très vite limitée en terme de webdesign pour un rendu professionnel d’un message d’erreur de validation, pour etre plus precis, voici une solution que j’utilise :

Il faut creer un controle validationsummary.ascx (par exemple) à placer dans le repertoire courrant ou dans /shared

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>

<% if (!ViewData.ModelState.IsValid) { %>
<div class="validation">
<strong><img src="/content/images/icon_error.png" alt=""/>Attention !</strong>
<% foreach (var item in ViewData.ModelState.GetAllErrors()) { %>
<p class="error">
<span><%=item%></span>
</p>
<% } %>
</div>
<% } %>



Ajouter la methode d’extension GetAllErrors dans une classe helper :




/// <summary>
/// Retourne la liste de toutes les erreurs de validation d'un formulaire
/// </summary>
/// <param name="modelState">State of the model.</param>
/// <returns></returns>
public static IEnumerable<string> GetAllErrors(this ModelStateDictionary modelState)
{
var errors = from state in modelState
from error in state.Value.Errors
where state.Value.Errors.Count > 0
select error.ErrorMessage;

return errors;
}





puis dans la page ou se trouve le formulaire il suffit d’appeler un rendu partiel




<%Html.RenderPartial("ValidationSummary"); %>

Aucun commentaire: