C# 在asp.net mvc中,如何添加验证

C# 在asp.net mvc中,如何添加验证,c#,asp.net-mvc,model-validation,C#,Asp.net Mvc,Model Validation,我想比较密码和指定的密码长度。在我更新它的控制器中有一些问题,它只在密码为空时返回视图,然后我应用了条件来匹配它们,但我希望这会自动完成,就像我要检查长度时一样,我不想在模型中应用另一个条件。请帮助我我的方法有什么问题 我试过这个密码 控制器: [AllowAnonymous] public ActionResult ResetPass() { return View(); } [HttpPost] [AllowAnonymous

我想比较密码和指定的密码长度。在我更新它的控制器中有一些问题,它只在密码为空时返回视图,然后我应用了条件来匹配它们,但我希望这会自动完成,就像我要检查长度时一样,我不想在模型中应用另一个条件。请帮助我我的方法有什么问题

我试过这个密码

控制器:

    [AllowAnonymous]
    public ActionResult ResetPass()
    {
        return View();
    }

    [HttpPost]
    [AllowAnonymous]
    public ActionResult ResetPass(userPass model, string phoneNumber, String password, String repassword)
    {
        if (!String.IsNullOrEmpty(model.repassword) && !String.IsNullOrEmpty(model.password)&&model.password==model.repassword )
        {
            using (var db = new MongoContext())
            {
                db._database.GetCollection<userPass>("userPass");

                var filter = Builders<BsonDocument>.Filter.Eq("_phoneNumber", phoneNumber);

                var update = Builders<BsonDocument>.Update
                    .Set("password", password);

                db._database.GetCollection<BsonDocument>("farmers").UpdateOne(filter, update, null);

                return RedirectToAction("Login", new {Message = "password has been reset"});
            } 
        }
        return View(model);
    }
视图:

@使用(Html.BeginForm(“ResetPass”、“Account”、FormMethod.Post))
{
密码
@Html.PasswordFor(m=>m.password)
@Html.ValidationMessageFor(m=>m.password,“,new{@class=“error”})
确认密码
@Html.PasswordFor(m=>m.repassword)
@Html.ValidationMessageFor(m=>m.repassword,“,new{@class=“error”})
}
@Scripts.Render(“~/bundles/jquery”)
@Scripts.Render(“~/bundles/jqueryval”)
只是稍微修改一下

对于最小长度,可以使用范围属性-

[Range(8, 25, ErrorMessage = "Min Length should be 8")]
第一个参数是minLength,第二个参数是maxLength


编辑比较属性

 [Compare(CompareField = password, ErrorMessage = "Password and Confirmation Password must match.")]
以下是详细示例:

 public class userPass
 {
    [BsonElement("password")]
    [Required(ErrorMessage = "Password is required.")]
    [StringLength(8, ErrorMessage = "Password length must be 8.")]
    public string password { get; set; }

    [BsonElement("repassword")
    [Required(ErrorMessage = "Confirmation Password is required.")]
    [Compare(CompareField = password, ErrorMessage = "Password and Confirmation Password must match.")]
    public string repassword { get; set; }

}

现在,它可以在控制器中进行比较,而无需写入条件,也可以进行必需的比较,但不用于字符串长度。@artista_14它不是
范围
,它的
字符串长度
,OP只需定义
最小长度
@renu您不提供的
最小长度
同意@EdSF。您可以使用MinimumLengthalso@artista_14我无法升级投票,将显示此通知:感谢您的反馈!声誉低于15的人所投的票将被记录,但不会改变公开显示的帖子分数。
[Range(8, 25, ErrorMessage = "Min Length should be 8")]
[MinLength(8, ErrorMessage = "Min Length should be 8")]
 [Compare(CompareField = password, ErrorMessage = "Password and Confirmation Password must match.")]
 public class userPass
 {
    [BsonElement("password")]
    [Required(ErrorMessage = "Password is required.")]
    [StringLength(8, ErrorMessage = "Password length must be 8.")]
    public string password { get; set; }

    [BsonElement("repassword")
    [Required(ErrorMessage = "Confirmation Password is required.")]
    [Compare(CompareField = password, ErrorMessage = "Password and Confirmation Password must match.")]
    public string repassword { get; set; }