ASP.Net MVC未将电子邮件呈现为type=";电邮;

ASP.Net MVC未将电子邮件呈现为type=";电邮;,asp.net,html,asp.net-mvc-3,validation,Asp.net,Html,Asp.net Mvc 3,Validation,在我的模型中,我有: [Required] [DataType(DataType.EmailAddress)] public string EmailAddress {get; set;} 然而,在我看来(来源),这表现为: <label for="EmailAddress">EmailAddress</label> <input data-val="true" data-val-required="The EmailAddress field is requir

在我的模型中,我有:

[Required]
[DataType(DataType.EmailAddress)]
public string EmailAddress {get; set;}
然而,在我看来(来源),这表现为:

<label for="EmailAddress">EmailAddress</label>
<input data-val="true" data-val-required="The EmailAddress field is required"
    id="EmailAddress" name="EmailAddress" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="EmailAddress" data-valmsg-replace="true">
电子邮件地址
我认为这应该是用type=“email”而不是type=“text”呈现的,因此在客户端进行验证时,如果电子邮件格式无效,则不会显示

编辑

此外,当我调用if(ModelState.IsValid)时,即使电子邮件地址的格式不正确,它也会返回true。因此,即使浏览器不支持HTML5,我也会认为控制器中的IsValid会强制执行验证-不是这样吗

在我的模型上是否还需要其他东西来强制type=“email”,以便正确检查有效的电子邮件地址

谢谢你

Mark

这仅在HTML5中可用:

<input type="email" />

您可以尝试将文档的doctype设置为HTML5,如下所示:

<!DOCTYPE html>

编辑,但您不能确定客户端浏览器是否能够将此输入作为电子邮件处理/验证。

。在该页面上,它表示它支持
电子邮件
输入类型

工具箱中还支持以下输入类型: 文本、颜色、电子邮件、搜索、时间、电话、文件、日期、日期时间、月份、, 星期、范围、数量


DataType属性不会对输入进行任何验证或呈现电子邮件属性。问题描述了如何使用正则表达式或库添加电子邮件验证

另外,如果使用
@Html.TextBoxFor(m=>m.Email,new{type=“Email”})
(如果使用HTML5 doctype),将呈现电子邮件属性,这将导致对兼容浏览器进行验证-请参阅


它还有一个额外的优势,即一些(最现代的)智能手机将显示电子邮件键盘(带有@symbol和.com),以便更轻松地输入。请参阅。

在创建项目时,您是否选择了HTML5选项?您好-谢谢-它设置为HTML5,但很明显mt浏览器版本不适合HTML5-但是,当发回控制器时,我本以为会发现模型无效?