我可以使用TextBoxFor
轻松完成此操作,但如何使用EditorFor
执行此操作?
我想使用DataAnnotation [DataType(DataType.EmailAddress)]
,但是没有这样做。
我不太明白DataType
注释实际上是做什么的,因为它乍一看似乎根本没有做任何事情。
答案 0 :(得分:15)
您可以覆盖HTML属性,如果浏览器不支持,则浏览器将回退到type='text'
:
@Html.TextBoxFor(m => m.Email, new { @type = "email" })
答案 1 :(得分:6)
EditorFor
辅助方法在某种程度上受到限制,但似乎还不支持HTML5 type="email"
属性。
您现在的选项似乎是使用TextBoxFor
或创建自定义模板,以便您设置输入的type
属性。这里是another thread,其中介绍了创建自己的模板的一些选项。
DataAnnotation [DataType(DataType.EmailAddress)]
实际上非常有用。它将表单字段的id
和name
设置为email
,您可以使用jQuery验证来显示用户客户端验证消息。将DataAnnotation
应用于模型类还意味着模型上的电子邮件属性将在服务器端自动验证。如果您在应用中启用不显眼的验证,则几乎可以免费获得客户端和服务器端验证。
答案 2 :(得分:5)
作为 jortizromo 的答案的补充,您现在至少有两个选择:
在方法@type
的{{1}}参数中指定htmlAttributes
,如
EditorFor()
在模型类定义中使用@Html.EditorFor(model => model.Email, new { htmlAttributes = new { @type = "email" } })
命名空间中的EmailAddress
注释属性用于相应的System.ComponentModel.DataAnnotations
属性,并简单调用方法EditorFor()(这提供了HTML验证数据标签可能是一个好主意或坏主意,具体取决于您的任务),如
视图模型
Email
Razor View
[EmailAddress]
public string Email { get; set; }