1

我一直在試圖弄清楚,但我沒有運氣。我有一個有兩個屬性的模型:PasswordConfirmPasswordHtml.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> 
} 

如果有人能夠幫助那麼這將是非常讚賞。

非常感謝!

+0

也許這是瀏覽器中的一些安全設置,它會阻止閱讀paswords的JavaScript?你正在使用哪種瀏覽器? – Richard 2013-04-12 07:57:24

+0

嗨@Stony,對於遲到的回覆感到抱歉。我使用的是Firefox和Chrome,兩者都有相同的問題。我試圖在這兩種瀏覽器中尋找這樣的設置,但找不到任何東西 - 是否存在這樣的設置?謝謝! – pkunal7 2013-04-18 11:33:41

+0

對不起,這只是基於回憶閱讀關於如何讓Javascript讀取密碼不安全的猜測,因爲它讓您容易受到攻擊。 – Richard 2013-04-18 11:48:45

回答

1

雖然我們沒有找到這個問題的根本原因,但我們想出了一個解決方法。

我們設置了一個函數,在blur()上爲每個使用jquery和字段id的密碼字段觸發。在此功能中,我們執行$(this).valid()$('#idOfField').valid()

同樣,您也可以在keyUp()函數中執行此操作。

這是強制驗證,但如果有人可以想出一個真正的原因,爲什麼我們可能遇到這個問題,我會非常感興趣的聽到它。