2010-09-04 9 views
0

J'ai suivi le blog here de scottgu et j'ai essayé de faire la validation des données. Réussi. Cependant ce que je vois est que si mon champ est un champ obligatoire, j'obtiens une erreur dès que je perds le focus de ma zone de texte. Je veux que la validation ne se produise que lorsque je clique sur soumettre.ASP.Net MVC Validation via DataAnnotations

Répondre

0

Cet article traite de l'utilisation de la validation côté client, d'où la validation de votre formulaire côté client. Pour cette raison, le formulaire est validé par jquery lorsque vous perdez le focus! L'one-way serait d'utiliser la validation côté serveur .. dans ce cas, vous aurez une actualisation de la page.

Mise à jour:

Voici l'exemple de code.
Modèle:

public class GuestForm 
    { 
     [Required(ErrorMessage="Please enter your name")] 
     public string Name { get; set; } 

     [Required(ErrorMessage="Please enter your phone number")] 
     public string Phone { get; set; } 

     [Required(ErrorMessage="Please enter your email address")] 
     public string Email { get; set; } 

     [Required(ErrorMessage = "Please enter your choice")] 
     public bool? YesNo { get; set; } 
    } 

Forme:

<div> 
<% using(Html.BeginForm()) { %> 
    <%= Html.ValidationSummary() %> 
    Name: <%= Html.TextBoxFor(x => x.Name) %><br/> 
    Email: <%= Html.TextBoxFor(x => x.Email) %><br/> 
    Phone: <%= Html.TextBoxFor(x => x.Phone) %><br/> 
    Will you attend? 
    <%= Html.DropDownListFor(x => x.YesNo, new[] { 
     new SelectListItem { Text = "Yes",Value = bool.TrueString }, 
     new SelectListItem { Text = "No",Value = bool.FalseString } 
     }, "Choose...") %><br/> 
    <input type="submit" value="Register!" /> 
<% } %> 
</div> 

Controller:

 [HttpGet] 
     public ViewResult RegisterForm() 
     { 
      return View(); 
     } 

     [HttpPost] 
     public ViewResult RegisterForm(GuestForm form) 
     { 
      if (ModelState.IsValid) 
       return View("Thanks", form); 
      else 
       return View(); 
     } 

ce code verra que votre formulaire est validé sur le côté serveur lorsque l'utilisateur cliquez sur soumettre. il affichera le message d'erreur en haut du formulaire sous forme de liste.

J'espère que cela vous aide.

+0

Je comprends cela. Mais dans un scénario de page Web simple aussi, à moins que vous ne cliquiez sur le bouton «soumettre», la validation ne se produit pas. Je souhaite que mes utilisateurs voient une liste d'erreurs de consolidation, puis agissent en conséquence. Voyant une erreur après chaque mise au point perdue peut réduire l'interaction de l'utilisateur. – Ashish

+0

@Ted, c'est possible .. Je vais soumettre une autre réponse avec un exemple de code que le code de collage dans le commentaire peut le rendre illisible. –

+0

@ Ted, vérifiez la réponse mise à jour –