asp.net – [DataType(DataType.EmailAddress)]和[EmailAddress]
我试图了解使用之间的主要区别
[DataType(DataType.EmailAddress)]& [电子邮件地址]. 在模型类中: – public class MYViewModel { [DataType(DataType.EmailAddress)] OR [EmailAddress] public string Email { get; set; } 我做了一个测试,这两个属性将执行以下操作: – >将阻止用户添加invalud电子邮件地址 但是我找不到有关功能的任何差异,当然如果我使用html.TextboxFor然后数据类型将没有任何效果,而如果我使用html.EditorFor然后数据类型数据注释将工作,但我说话关于技术实施方面的差异? 解决方法
希望这澄清……
如您所述,DataType属性主要用于格式化,而不是验证.它似乎工作的原因是: > @ Html.EditorFor呈现HTML5< input type =“email”....这要求客户端/浏览器进行验证.如果浏览器符合,则发生客户端验证.它会“工作”,因为客户端为您验证了它(但这不是服务器端验证) 样品测试 给出一个类似这样的模型: public class User { [Required(ErrorMessage = "Email must be provided")] [DataType(DataType.EmailAddress,ErrorMessage = "this doesn't do email format validation")] [EmailAddress(ErrorMessage = "Not a valid Email")] //Comment un-comment to see effect public string EmailAddress { get; set; } [Required(ErrorMessage = "Name must be provided")] public string Name { get; set; } } 使用@ Html.TextBoxFor代替@ Html.EditorFor的视图在测试中取出HTML5客户端验证: @Html.TextBoxFor(model => model.EmailAddress,.... 像这样的控制器: public ActionResult CheckUser(User user) { ViewBag.Foo = string.Empty; if(Request.HttpMethod == HttpMethod.Post.ToString()) { ViewBag.Foo = ModelState.IsValid ? "User Model validated" : "Failed Model Validation"; } return View(); } 如果你: >注释掉[EmailAddress]属性,只保留[DataType(DataType.EmailAddress)]您的模型对任何文本都有效(无电子邮件格式验证) >如果你把“foo”你的模型“有效”,没有错误信息. >保留它,您将获得“服务器端”电子邮件格式验证 >如果您输入“foo”,它将失败并显示“Not a valid Email”错误消息 心连心… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 在.NET 4.6升级后,w3wp.exe与ThreadAbortExcept
- asp.net – 如何将两个模型传递给一个View
- asp.net-mvc – 有没有办法为MVC控制器中的每个动作设置[Au
- asp.net-mvc – F#中的异步控制器操作
- 在ASP.NET中使用Web API而不是Web方法有什么优势
- ASP.NET:更好地在资源或数据库中存储可本地化的UI文本?
- asp.net – 兼容性问题是IE10
- asp.net-mvc – 从控制器操作返回301重定向
- asp.net – 元素’UpdatePanel’不是已知元素
- asp.net – IIS Web.Config 301重定向查询字符串参数(?)
- .net – 仍然推荐COM吗?
- asp.net-mvc – 重点关注ASP.NET MVC模型错误
- asp.net中执行exe应用程序
- asp.net-mvc-4 – IIS 7.5上的ASP.NET MVC 4,返回
- asp.net signalR 专题—— 第四篇 模拟RPC模式的
- asp.net-mvc-routing – ASP.NET MVC区域:如何隐
- 为什么asp.net OnTextChanged不工作
- asp.net – 如何隐藏web api 2中的元数据,odata
- asp.net – 我应该在服务层或控制器层发送电子邮
- asp.net-mvc – ASP.Net MVC 3中的远程验证:如何