2017-08-22 1 views
-1

J'ai une classe avec 2 propriétéstextes d'erreurs de validation ne semblent pas

[StringLength(8, ErrorMessage = "User name can't be longer than 8 chars!")] 
[Required(ErrorMessage = "Must be filled!")] 
public string NickName { get; set; } 

[Required(ErrorMessage = "Must be filled!")] 
[DataType(DataType.Password)] 
public string Password { get; set; } 

et je cette vue partielle, l'utilisateur insère ses détails et appuie sur le bouton Sumbit.

NickName: 
    @Html.TextBoxFor(x => x.NickName) 
    @Html.ValidationMessageFor(x => x.NickName) 
</div> 

<div> 
    Password: 
    @Html.TextBoxFor(x => x.Password) 
    @Html.ValidationMessageFor(x => x.Password) 
</div> 

<button type="submit">Log In</button> 

Ceci est mon action Post,

[HttpPost] 
public ActionResult LogIn(ShortUser u) 
{ 
    if (ModelState.IsValid == true) 
    { 
     if (u.PassMatchUser()) 
     { 
      FormsAuthentication.SetAuthCookie(u.NickName, true); 
     } 
     else 
     { 
      ModelState.AddModelError("Error","Username/Password inncorect!"); 
     } 
      return Redirect(ControllerContext.HttpContext.Request.UrlReferrer.ToString()); 
     } 
     else 
     { 
      return Redirect(ControllerContext.HttpContext.Request.UrlReferrer.ToString()); 
     } 
    } 

Si j'insérer des valeurs non valides les textes de validation ne semblent pas.

+0

Avez-vous vérifié si 'ModelState.IsValid' dans votre action? Il vous indique si des erreurs de modèle ont été ajoutées à ModelState. Pouvez-vous partager votre action et remplir le formulaire. – Zahed

Répondre

0

Vous devez définir résumé de validation sur

@Html.ValidationSummary(true) 
@Html.EnableClientValidation() 

Sur votre vue partielle.

0

Entourez-le dans un forme bloc.

<form> 
. . . 
</form> 

ou

@using (Html.BeginForm()) 
{ . . . } 

et assurez-vous que vous chargez jquery, jquery.validate et jquery.validate.unobtrusive

0

Il n'y a pas de véritable nécessaire pour ModelState changement

if(ModelState.IsValid==true) -> if(ModelState.IsValid)

Mak e Assurez-vous que:

  • Renvoyer la vue si ModelState n'est pas valide.

    Retour vue(); Le modèle dans la vue et le modèle que vous renvoyez dans Post Action doivent être identiques.

  • Assurez-vous que vous chargez jquery, jquery.validate et jquery.validate.unobtrusive

    <script src="@Url.Content("~/Scripts/jquery.validate.js")"></script> 
        <script src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script> 
        <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")"> 
        @Scripts.Render("~/bundles/jqueryval") 
    
0

mettre votre code de vue partielle dans un beginform

par exemple: @using (Html .BeginForm ("LogIn", "Votre nom de contrôleur", FormMethod.Post)) {

/// codes de vue partielle

}