Mar*_*ark 2 html asp.net validation asp.net-mvc-3
在我的模型中,我有:
[Required]
[DataType(DataType.EmailAddress)]
public string EmailAddress {get; set;}
Run Code Online (Sandbox Code Playgroud)
但是在我看来(来源)这会呈现为:
<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">
Run Code Online (Sandbox Code Playgroud)
我认为应该使用type ="email"而不是type ="text" 进行渲染- 因此在客户端进行验证时,如果电子邮件的格式不是有效,则不会提取.
编辑
此外,当我调用if(ModelState.IsValid)时,它返回true,即使电子邮件地址的格式不正确.所以即使浏览器不支持HTML5,我也会认为控制器中的IsValid会强制执行验证 - 不是这样吗?
在我的模型上是否还需要其他东西,强制输入type ="email"以便正确检查有效的电子邮件地址?
谢谢,
标记
DataType属性不对输入执行任何验证或呈现email属性.此问题描述了如何使用正则表达式或Data Annotations Extensions库添加电子邮件验证 .
此外,如果你使用@Html.TextBoxFor(m => m.Email, new { type = "email" })
(如果使用的是HTML5的doctype),将呈现电子邮件属性,该属性将导致兼容的浏览器验证-看到这个.
它还具有额外的优势,一些(最现代的)智能手机将显示电子邮件键盘(带有@符号和.com),以便于打字.请参阅iPhone上的默认为数字,电子邮件和URL键盘.
归档时间: |
|
查看次数: |
1417 次 |
最近记录: |