我有一个正在用 ASP.Net MVC3 编写的移动应用程序(使用 JQuery 不显眼的验证)。作为其中的一部分,我正在收集用户的姓名和电子邮件信息。我的模型包括以下字段:
[Required] public String Name {get; set;}
[Required] public String Email {get; set;}
在我看来,我有以下形式的输入元素:
@Html.EditorFor(m => m.Name);
@Html.EditorFor(m => m.Email, "Email");
其中字符串编辑器模板和电子邮件编辑器模板是相同的,除了电子邮件模板明确将类型属性设置为“电子邮件”。
当我最初提交表单而不输入任何数据时,我会得到客户端验证,说明这两个字段都是必需的。当我开始在名称字段中输入时,验证警告立即消失。当我开始在电子邮件字段中输入时,验证仍然存在。
然后我可以单击提交,尽管“电子邮件字段是必需的”,但表单仍会正确提交。验证消息仍然可见。
如果我修改电子邮件编辑器模板以设置 type="text" 而不是 type="email",验证会清除我期望的方式(但移动用户不会获得电子邮件专用键盘)。
两个问题:(1)它为什么会这样?(2) 我怎样才能让它表现得“正确”(即,当输入电子邮件时,“必需的”验证消失了)?