Quelque chose d'étrange se passe ici.Validation de comparaison côté client MVC 3
J'ai une forme de base:
<% using (Html.BeginForm())
{ %>
<%: Html.LabelFor(model => model.user.email) %>
<%: Html.TextBoxFor(model => model.user.email) %>
<%: Html.ValidationMessageFor(model => model.user.email) %>
<br />
<%: Html.LabelFor(model => model.user.password) %>
<%: Html.PasswordFor(model => model.user.password) %>
<%: Html.ValidationMessageFor(model => model.user.password) %>
<br />
<%: Html.LabelFor(model => model.user.confirmPassword) %>
<%: Html.PasswordFor(model => model.user.confirmPassword) %>
<%: Html.ValidationMessageFor(model => model.user.confirmPassword) %>
<br />
<input type="submit" value="Submit" />
<% } %>
La tête a les suivantes:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<link rel="Stylesheet" type="text/css" href="/Content/Site.css" />
<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
Le ViewModel est la suivante:
public class RegisterViewModel
{
public RegisterUser user { get; set; }
}
public class RegisterUser
{
[Required]
[Display(Name = "Email Address")]
public string email { get; set; }
[Required]
[Display(Name = "Password")]
public string password { get; set; }
[Required]
[Display(Name = "Confirm Password")]
[Compare("password")]
public string confirmPassword { get; set; }
}
La comparaison validation entre le mot de passe et confirmPassword toujours dit:
'Confirmer le mot de passe' et 'mot de passe' ne correspondent pas.
même si je sais qu'ils correspondent
Voici la partie étrange: lorsque je supprime le premier champ de la page de vue, tout fonctionne.
Alors, quand il est juste
<% using (Html.BeginForm())
{ %>
<%: Html.LabelFor(model => model.user.password) %>
<%: Html.PasswordFor(model => model.user.password) %>
<%: Html.ValidationMessageFor(model => model.user.password) %>
<br />
<%: Html.LabelFor(model => model.user.confirmPassword) %>
<%: Html.PasswordFor(model => model.user.confirmPassword) %>
<%: Html.ValidationMessageFor(model => model.user.confirmPassword) %>
<br />
<input type="submit" value="Submit" />
<% } %>
tout fonctionne parfaitement.
Des idées?
Merci.
Pouvez-vous préciser ce que vous essayez de réaliser? – saarthak
@Calvin, j'ai le même problème avec Razor. Apparemment, la validation des données correspond à votre champ de mot de passe comme ceci: * .Password, qui correspond à toutes les instances de RegisterUser, plutôt que RegisterUser.Password. –