2010-10-18 4 views
3

J'ai créé un HtmlHelper qui m'aide à afficher une boîte de dialogue modale jQuery: Je définis un message dans TempData du contrôleur et si le message n'est pas nul, l'assistant écrit un code jquery + html pour rendre apears popup après la publication. Mais j'ai besoin de montrer les résultats de la Validation sous la forme d'un message (même message affiché par ValidationSummary), et je n'ai aucune idée pour y parvenir. Est-ce que quelqu'un peut m'aider? Est-ce que je le fais de la bonne façon?Comment puis-je obtenir des messages ValidationSummary par programmation?

Mes helper.cs:

[...] 
     public static string ModalDialogNotifier(this HtmlHelper helper) 
     { 
      string message = ""; 
      if (helper.ViewContext.TempData["message"] != null) 
       message = helper.ViewContext.TempData["message"].ToString(); 
     if (!String.IsNullOrEmpty(message)) 
     { 
      StringBuilder sb = new StringBuilder(); 
      sb.AppendLine("<script>$(document).ready(function() {$.blockUI({ message: $('#mdiag')});$('#mdiagok').click(function() {$.unblockUI();return false;});})</script>"); 
      sb.AppendFormat("<div id='mdiag'>{0}<input type='button' id='mdiagok' value='Ok' /></div>", message); 
      return sb.ToString(); 
     } 
     return string.Empty; 
    } 
[...] 

Mon contrôleur:

[HttpPost] 
    [Authorize(Roles = "Admin")] 
    public ActionResult Create(CreateUserModel Model) 
    { 
     if (!ModelState.IsValid) 
     { 
      this.TempData["message"] = "Model is not valid"; 
     } 
     else 
     { 
      [...] 
     } 
     return View(Model); 
    } 

Mon Vue:

[...]<%= Html.ModalDialogNotifier()%>[...] 

Répondre

3

Vous pouvez faire quelque chose comme ceci:

StringBuilder sb = new StringBuilder(); 

foreach (ModelState state in ModelState.Values) 
    foreach (ModelError error in state.Errors) 
     sb.AppendFormat("<div>{0}</div>", error.ErrorMessage); 
Questions connexes