Html.PasswordFor()不显眼的字段验证
问题描述:
我一直在试图弄清楚,但我没有运气。我有一个有两个属性的模型:Password
和ConfirmPassword
。Html.PasswordFor()不显眼的字段验证
如果我在视图中显示这些文本框(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>
}
如果有人能够帮助那么这将是非常赞赏。
非常感谢!
答
虽然我们没有找到这个问题的根本原因,但我们想出了一个解决方法。
我们设置了一个函数,在blur()
上为每个使用jquery和字段id的密码字段触发。在此功能中,我们执行$(this).valid()
或$('#idOfField').valid()
。
同样,您也可以在keyUp()
函数中执行此操作。
这是强制验证,但如果有人可以想出一个真正的原因,为什么我们可能遇到这个问题,我会非常感兴趣的听到它。
也许这是浏览器中的一些安全设置,它会阻止阅读paswords的JavaScript?你正在使用哪种浏览器? – Richard 2013-04-12 07:57:24
嗨@Stony,对于迟到的回复感到抱歉。我使用的是Firefox和Chrome,两者都有相同的问题。我试图在这两种浏览器中寻找这样的设置,但找不到任何东西 - 是否存在这样的设置?谢谢! – pkunal7 2013-04-18 11:33:41
对不起,这只是基于回忆阅读关于如何让Javascript读取密码不安全的猜测,因为它让您容易受到攻击。 – Richard 2013-04-18 11:48:45