2010-07-15 84 views
12

我的印象是,使用像這樣的註解:.NET MVC屏蔽密碼文本框

<%: Html.TextBoxFor(Function(model) model.Password) %> 
<%: Html.ValidationMessageFor(Function(model) model.Password) %> 

但是這個被渲染:

<Required()> 
<DisplayName("Choose a Password:")> 
<ValidatePasswordLength()> 
<DataType(DataType.Password)> 
Public Property Password As String 

視圖中使用時,將創建一個蒙面場沒有類型=「密碼」

什麼是「DataType.Password」用於如果不是這樣?

回答

19

您正在使用Html.TextBoxFor,它總是在生成的HTML中輸出<input type="text">標籤。 如果您希望自動遵守DataType.Password註釋,則應該使用Html.EditorFor。 您可以閱讀更多關於編輯器模板以及如何在此處對其進行自定義的信息:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html

+0

出於同樣的原因,這適用於標記爲DataType.EmailAddress的字段嗎? – ewahner 2010-07-15 18:45:26

+0

DisplayFor方法具有EmailAddress的默認模板。但是,EditorFor可以使用的電子郵件沒有默認編輯器。它只會使用純文本框。但是,您可以編寫自定義編輯器模板。 – marcind 2010-07-15 18:54:09

26

TextBoxFor覆蓋您的註釋,因爲它指示明文輸入。正如marcind提到的那樣,EditorFor表示註釋,或者您可以使用PasswordFor表示該字段。

+3

+1更簡單... – 2013-07-16 14:37:01

+1

非常簡單而甜美 – 2014-11-07 17:00:47