asp mvc 2 Editor для странного поведения - PullRequest
2 голосов
/ 23 августа 2010

хорошо, я определил общий редактор для строки, как показано ниже:

<% @ Control Language = "C #" Inherits = "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, то все поля дисплея будут отображены ??

Очень странное поведение ...

Кто-то знает, почему?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2011

DataType контролирует, какой тип шаблона используется для визуализации.Когда вы указываете «Текст» или «Пароль», MVC выбирает шаблоны по умолчанию для них (они встроены) и игнорирует ваш шаблон.

Электронная почта работает, потому что нет встроенного шаблона электронной почты, и поэтомувозвращается к строке.

РЕДАКТИРОВАТЬ: Я думаю, что я неправильно понял.Вы говорите, что они вообще не рендерится?У вас есть пустые шаблоны паролей и текстов в папке EditorTemplates?

0 голосов
/ 10 мая 2011

Вам необходим ValidationSummary, чтобы показать ошибки всех свойств в модели. В противном случае вам потребуется ValidationMessageFor для каждого свойства в модели.

Это будет работать:

<%= Html.ValidationSummary() %>

Или это:

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