[英]mvc5 form validation update failed
我一直在基于mvc5的项目上工作。 我在Model类上应用了表单验证。 应用“比较”条件User_password和User_Password_Confirm。 它在插入时效果很好。 但是当我必须更新同一客户端bt的信息而不是密码时,在这种情况下,我的MoldeStat.Valid为“ false”,因为我认为这是由于密码上的“ compare”条件所致。
有人可以告诉我如何解决这个问题吗? 我遇到“更新”问题。
提前谢谢你的帮助
我的模特班
[Required(ErrorMessage = "*")]
public string User_Password { get; set; }
[Compare("User_Password")]
[Required(ErrorMessage = "*")]
public string User_Password_Confirm { get; set; }enter code here
我的控制器班
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit2([Bind(Include = "User_Id,User_Nom,User_Prenom,User_Email,User_Telephone,User_Role,User_Password,User_Password_Confirm,UserCreationDate,User_Status")] User user)
{
if (ModelState.IsValid)
{
//db.Entry(user).State = EntityState.Modified;
//db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.User_Status = new SelectList(db.Account_Status, "Account_Status_ID", "Account_Status_Nom", user.User_Status);
ViewBag.User_Role = new SelectList(db.Role, "Role_Id", "Role_Name", user.User_Role);
return View("edit");
}
插入视图(仅密码部分)。 在这里,我尝试设置User_Password_confirm = User_password的值,但失败了:(
<div class="form-group">
@Html.LabelFor(model => model.User_Password, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.User_Password)
@Html.ValidationMessageFor(model => model.User_Password)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.User_Password_Confirm, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.User_Password_Confirm, new { @Value = Model.User_Password })
@Html.ValidationMessageFor(model => model.User_Password_Confirm)
</div>
</div>
您可以通过插入,轻松查看所有模型验证错误的摘要
@Html.ValidationSummary
在您看来。
首先,我建议您创建两个不同的模型:例如UserCreateModel和UserUpdateModel。
然后,您的代码将包含一些安全漏洞。 如果我是用户ID 275,则可以更改表单中的userId(即使它是隐藏的),这样我就可以更改任何用户的电子邮件,密码,名字,姓氏。
您需要做的是获取登录用户的ID,然后仅更改已更改的数据。
if (ModelState.IsValid)
{
var userfromDb = db.Users.Find(loggedUser.EmployeeId);
userfromDb .Email = user.Email;//etc...
db.SaveChanges();
return RedirectToAction("Index");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.