2009-06-09 4 views
4

Sur une vue ASP.NET MVC, j'ai deux cases à cocher, une pour l'adresse e-mail et une pour le téléphone. Je veux m'assurer qu'au moins un est coché (les deux peuvent être cochés, donc un bouton radio n'est pas idéal) et si aucun n'est le cas, surligner la ligne avec une bordure rouge comme une zone de texte avec la fonctionnalité de validation ...Validation de données ASP.NET MVC - Mettre en surbrillance la ligne de tableau par rapport aux boîtes de texte

J'ai d'autres champs qui sont validés correctement et le CSS change lorsqu'il y a un problème sur les zones de texte et les zones de texte en conséquence. Le code ci-dessous affiche le message informant l'utilisateur qu'ils doivent indiquer une préférence de contact, mais ne met pas en évidence la ligne comme ayant un problème ...

copie d'écran alt text http://i41.tinypic.com/2hcgfew.jpg

VIEW

<table width="100%"> 
    <tr> 
     <td> 
      <label> 
       How would you like us to contact you? 
      </label> 
     </td> 
    </tr> 
    <tr id="pref_row"> 
     <td> 
      <span class="bold-text">Email: </span>&nbsp; 
      <%=Html.CheckBox("EmailDesired")%> 
      &nbsp; &nbsp; <span class="bold-text">Phone: </span>&nbsp; 
      <%=Html.CheckBox("PhoneDesired")%> 
     </td> 
    </tr> 
</table> 

CONTRÔLEUR

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Index(ContactUs contactus) 
{ 
    ContactUsService svc = new ContactUsService(); 
    // Validation 
    if (!contactus.EmailDesired && !contactus.PhoneDesired) 
     ViewData.ModelState.AddModelError("pref_row", "Please specify a contact preference (phone and/or email)!"); 

    if (ViewData.ModelState.IsValid) 
    { 
     MessageModel msg = svc.SendRequest(contactus); 
     return RedirectToAction("Index", msg); 
    } 
    else 
    { 
     return View(); 
    } 
} 
+1

Qu'en est-il un bouton radio? –

+0

Daniel - Il faut vérifier, mais les deux peuvent aussi être vérifiés. Les boutons radio sont généralement pour A ou B, pas pour A et B ... – RSolberg

Répondre

4

Lorsque le HtmlHelper se rend lui-même, il vérifie s'il y a un élément dans le dictionnaire ModelState qui a la même clé que l'assistant lui-même. si c'est le cas, le contrôle sera rendu avec la classe d'attribut égale à "entrée-validation-erreur" qui est définie dans le fichier css. Par conséquent, le style ne sera appliqué que sur les contrôles d'entrée rendus.

C'est ma solution:

<table width="100%"> 
    <tr> 
     <td> 
      <label> 
       How would you like us to contact you? 
      </label> 
     </td> 
    </tr> 
    <tr class="<%=ViewData.ModelState["pref_row"]!= null ? "input-validation-error":"" %>"> 
     <td> 
      <span class="bold-text">Email: </span> 
      <%=Html.CheckBox("EmailDesired")%> 
       <span class="bold-text">Phone: </span> 
      <%=Html.CheckBox("PhoneDesired")%> 
     </td> 
    </tr> 
</table> 
+0

Génial! Je vais tester celui-là ... – RSolberg

Questions connexes