好吧我已经为字符串定义了一个共享编辑器,如下所示
<%@ 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然后渲染所有显示字段??
很奇怪的行为......
有人知道为什么吗?
答案 0 :(得分:0)
您需要ValidationSummary来显示模型中所有属性的错误。否则,您将需要为模型中的每个属性使用ValidationMessageFor。
这将有效:
<%= Html.ValidationSummary() %>
或者这个:
<%= Html.ValidationMessageFor(model.UserName) %>
<%= Html.ValidationMessageFor(model.Email) %>
<%= Html.ValidationMessageFor(model.Password) %>
答案 1 :(得分:0)
DataType控制用于呈现的模板类型。当您指定文本或密码时,MVC将为这些模板选择默认模板(它们是内置的)并忽略您的模板。
电子邮件有效,因为没有内置的电子邮件模板,因此它会回退到字符串。
编辑:我想我误解了。你是说他们根本没有渲染?您的EditorTemplates文件夹中是否有空白的密码和文本模板?