2010-08-23 55 views
2

確定我已經定義爲串像以下ASP MVC 2 EditorFor奇怪的行爲

<%@控制語言= 「C#」 繼承= 「System.Web.Mvc.ViewUserControl」 共享編輯%>
<%= Html.LabelFor(型號=>模型)%>
<%= Html.TextBoxFor(型號=>模型)%>
<%= Html.ValidationMessageFor(型號=> 模型)% >

現在我打電話像這樣的自定義編輯器中的另一個控制

 <%= Html.EditorFor(model=>model.Username)%> 
     <%= Html.EditorFor(model=>model.Email)%> 
     <%= Html.EditorFor(model=>model.Password)%> 

我的模型是這樣的

[Required(ErrorMessage="Le nom d'utilisateur est requis.")] 
    [DataType(DataType.Text)] 
    [DisplayName("Nom d'utilisateur")] 
    public string Username { get; set; } 

    [Required(ErrorMessage = "L'email est requis.")] 
    [DataType(DataType.EmailAddress)] 
    [DisplayName("Courriel")] 
    public string Email { get; set; } 

    [Required(ErrorMessage = "Le mot de passe est requis.")] 
    [ValidatePasswordLength] 
    [DataType(DataType.Password)] 
    [DisplayName("Mot de passe")] 
    public string Password { get; set; } 

所呈現的是電子郵件領域唯一的顯示。 其他兩個不渲染? 如果我刪除DataType.Text和DataType.Password然後所有的顯示字段被渲染?

很奇怪的行爲...

有人知道爲什麼嗎?

+0

你能告訴我爲什麼你需要數據類型嗎? – Stefanvds 2010-08-23 18:22:50

+0

我可以走了,但爲什麼不呢? – mateo 2010-08-24 14:11:26

回答

0

您需要一個ValidationSummary來顯示模型中所有屬性的錯誤。否則,您需要爲模型中的每個屬性設置一個ValidationMessageFor。

這將工作:

<%= Html.ValidationSummary() %> 

或者這樣的:使用什麼類型的模板來呈現

<%= Html.ValidationMessageFor(model.UserName) %> 
<%= Html.ValidationMessageFor(model.Email) %> 
<%= Html.ValidationMessageFor(model.Password) %> 
+0

他沒有詢問驗證信息。你怎麼知道他的父母看法中沒有驗證摘要? – 2011-11-29 18:42:24

+0

由於這個問題在3個小時前剛剛更改,我在7個月前回答了這個問題,所以我無法評論混淆。 – 2011-11-29 22:24:59

+0

對不起,沒有注意到日期。然而,最近的編輯只是一個重新標記,而不是內容改變的問題。 – 2011-11-29 23:22:53

0

數據類型的控件。當您指定文本或密碼時,MVC將爲這些模板(它們是內置的)選擇默認模板,並忽略您的模板。

電子郵件的工作原理是因爲沒有內置的電子郵件模板,因此它回退到字符串。

編輯:我想我誤解了。你是說他們根本不渲染?您的EditorTemplates文件夾中是否有空白的密碼和文本模板?