C# 用于自动获取fred的ValidationMessage
我有一个C# 用于自动获取fred的ValidationMessage,c#,validation,asp.net-mvc-5,unobtrusive-javascript,C#,Validation,Asp.net Mvc 5,Unobtrusive Javascript,我有一个actionmethodresetpassword类型为get,返回一个视图。从actionlink按钮调用该方法。我向这个视图传递了一个用户obj。现在,当我单击actionlink时,它会转到视图,但由于我已经应用了validationfor,当加载视图时,验证会自动触发。这是因为我正在将用户的obj传递给视图吗。?如果是这种情况,那么我如何才能关闭该操作方法的HttpGet验证,因为我只想加载输入,当用户开始填充输入时,应该只触发验证 行动方法 [ValidateInput(fal
actionmethod
resetpassword
类型为get,返回一个视图。从actionlink
按钮调用该方法。我向这个视图传递了一个用户obj。现在,当我单击actionlink时,它会转到视图,但由于我已经应用了validationfor
,当加载视图时,验证会自动触发。这是因为我正在将用户的obj传递给视图吗。?如果是这种情况,那么我如何才能关闭该操作方法的HttpGet
验证,因为我只想加载输入,当用户开始填充输入时,应该只触发验证
行动方法
[ValidateInput(false)]
[HttpGet]
[ActionName("ResetPassword")]
public ActionResult ResetPassword(UserBE user)
{
user.Email = TempData["userEmail"].ToString();
return View(user);
}
看法
模型
我刚刚在布局中添加了以下内容,效果很好
@Scripts.Render("~/bundles/jqueryval")
@Html.ActionLink(“重置密码”、“重置密码”)
没有向公共操作结果重置密码(UserBE user)
传递任何信息,只需删除参数并在method@StephenMuecke例如我做到了。现在我没有得到自动验证,但是现在第二个输入密码没有得到验证。如果我将其留空,它不会给出任何验证错误消息。对不起,我不明白-这将与您的POST方法关联,而不是GET方法。你可以发布你的方法和模型,显示你有哪些验证属性吗applied@StephenMuecke:请查看我的编辑。无法发现验证消息不显示的原因,但如果(!ModelState.IsValid){return View(user);},则POST方法应以开头
因此,在您尝试更新视图之前,将返回视图以更正错误。此外,属性ConfirmedPassword
上的错误消息也混杂在一起,这意味着您在查看脚本时遇到了问题。请确保删除问题中指出的内容
<h3>@Html.ActionLink("Reset Password", "ResetPassword")
[HttpPost]
[ActionName("ResetPassword")]
public ActionResult ResetPasswordPost(UserBE user)
{
user = UserBL.AuthenticateUser(user);
if (!user.AuthenticUser || (user.Password==user.NewPassword))
{
return View(user);
}
else
{
return UserBL.ResetPassword(user)?View("LoginSuccessful",user):View(user);
}
}
[Required(ErrorMessage = "Password is required")]
public string Password { get; set; }
private bool authenticUser = false;
public bool AuthenticUser
{
get { return authenticUser; }
set { authenticUser = value; }
}
[Required(ErrorMessage = "Password is required")]
public string NewPassword { get; set; }
[Required(ErrorMessage = "Confirm passord and NewPassWord does not match")]
[Compare("NewPassword")]
public string ConfirmedPassword { get; set; }
@Scripts.Render("~/bundles/jqueryval")