asp mvc 2 EditorFor奇怪的行为

时间:2010-08-23 16:48:19

标签: asp.net asp.net-mvc-2 editorfor

好吧我已经为字符串定义了一个共享编辑器,如下所示

  

<%@ Control Language =“C#”   继承= “System.Web.Mvc.ViewUserControl”   %GT;
      <%= Html.LabelFor(model => model)%>
      <%= Html.TextBoxFor(model => model)%>
      <%= Html.ValidationMessageFor(model =>   model)%>

现在我在另一个控件中调用这样的自定义编辑器

        <%= 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然后渲染所有显示字段??

很奇怪的行为......

有人知道为什么吗?

2 个答案:

答案 0 :(得分:0)

您需要ValidationSummary来显示模型中所有属性的错误。否则,您将需要为模型中的每个属性使用ValidationMessageFor。

这将有效:

<%= Html.ValidationSummary() %>

或者这个:

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

答案 1 :(得分:0)

DataType控制用于呈现的模板类型。当您指定文本或密码时,MVC将为这些模板选择默认模板(它们是内置的)并忽略您的模板。

电子邮件有效,因为没有内置的电子邮件模板,因此它会回退到字符串。

编辑:我想我误解了。你是说他们根本没有渲染?您的EditorTemplates文件夹中是否有空白的密码和文本模板?