在ASP.Net MVC中比较密码和确认密码

时间:2014-02-13 06:33:55

标签: asp.net-mvc asp.net-mvc-4

是否可以将确认密码文本框的文本与。进行比较 @Html.PasswordFor(model=>model.Password)

@using (Html.BeginForm())
{
    <table>

        <tr>
            <td>@Html.LabelFor(model => model.Password)</td>
            <td>@Html.PasswordFor(model => model.Password)</td>
            <td>@Html.ValidationMessageFor(model => model.Password)</td>
        </tr>
        @*Here I want to take "Confirm Password" and want to compare it with "Password" in View(.cshtml only) as
          I have not taken ConfirmPassword in my model.*@
        <tr>
            <td>
                <input type="submit" value="Create" />
            </td>
        </tr>
    </table>              
}

请建议任何方式或解决方案,

如何在模型中未获取确认密码属性compare passwordconfirm password。感谢....

6 个答案:

答案 0 :(得分:20)

使用Compare DataAnnotation可以很容易地比较密码,但如果使用NotMappedNotMapped Properties In An Entity Framework Using A Code-First Strategy

从数据库生成模型
[Required]
public string Password { get; set; }

[NotMapped] // Does not effect with your database
[Compare("Password")]
public string ConfirmPassword { get; set; }

答案 1 :(得分:9)

更改您的模型以包含确认密码变量

[Required]
public string Password { get; set; }
[Compare("Password")]
public string ConfirmPassword { get; set; }

答案 2 :(得分:6)

只需将[NotMapped]添加到数据模型

中的确认密码属性的上方
[NotMapped]
[Required(ErrorMessage = "Confirm Password required")]
[CompareAttribute("NewPassword", ErrorMessage = "Password doesn't match.")]        
public string ConfirmPassowrd { get; set; }

通过这种方式,它不会检查数据库表中的ConfirmPassword属性

答案 3 :(得分:3)

刚试过[Compare("field_to_compare")],它也适用于MVC 5.

答案 4 :(得分:1)

尝试为此编写javascript来比较密码...

DataAnnotation是首选

答案 5 :(得分:0)

可以在客户端和服务器端都将“密码”文本框值与“确认密码”文本框值进行比较。其他人提供的解决方案用于在服务器端进行确认。如果您不想在模型中包括“确认密码”,则必须比较客户端。这可以通过Javascript完成。您可以手动编写代码进行比较,也可以在.cshtml文件中包含以下脚本。 (假设您正在使用Visual Studio编写代码)。

<script src="/Scripts/jquery-3.3.1.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>

然后您应该创建一个如下所示的字段:

 <input  data-val="true" data-val-equalto="Password and Confirmation Password must match." data-val-equalto-other="*.Password" data-val-required="Required." id="ConfirmPassword" name ="ConfirmPassword"  type="password" />
<span class="field-validation-valid error" data-valmsg-for="ConfirmPassword" data-valmsg-replace="true"></span>

这会将您的“密码”文本框与“确认密码”文本框进行比较,并且如果两个文本框中的值都不匹配,并且无需编写任何其他代码,还会显示一条错误消息。

尽管,好的做法是同时进行客户端和服务器端验证。