我一直试图解决这个问题,但我没有运气。我有一个包含两个属性的模型:Password
和ConfirmPassword
。
如果我在视图中将它们显示为TextBoxes(Html.TextBoxFor(...)
),那么验证工作正常。但是,如果我将这些显示为密码字段(Html.PasswordFor(...)
),则在提交表单之前验证不起作用。
以下是我的视图和模型的代码。请注意,视图只是一个测试视图,我没有在其上放置提交按钮。 型号:
public class TestViewModel
{
[Required(ErrorMessage = "Password is required")]
[StringLength(40, ErrorMessageResourceType = typeof(Resources.Shared_Editor_SecurityDetails), ErrorMessageResourceName = "PasswordLength")]
public string Password { get; set; }
[Required(ErrorMessage = "Confirm is required")]
[Compare("Password", ErrorMessage = "Must be the same as Password")]
public string ConfirmPassword { get; set; }
}
查看:
@using (Html.BeginForm())
{
<div>
@Html.LabelFor(m => m.Password)
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)
</div>
<div>
@Html.LabelFor(m => m.ConfirmPassword)
@Html.PasswordFor(m => m.ConfirmPassword)
@Html.ValidationMessageFor(m => m.ConfirmPassword)
</div>
}
如果有人能够提供帮助,那将非常感激。
非常感谢!
答案 0 :(得分:1)
虽然我们没有找到问题的根本原因,但我们已经提出了一种解决方法。
我们使用jquery和字段id为每个密码字段设置一个在blur()
上触发的函数。在此功能中,我们执行$(this).valid()
或$('#idOfField').valid()
。
同样您也可以在keyUp()
功能中执行此操作。
这迫使验证,但如果有人能够提出我们为什么遇到这个问题的实际原因,我会非常感兴趣听到它。