【发布时间】:2017-09-16 12:10:52
【问题描述】:
我正在使用 MVC5 并尝试验证表单。
当我在字段中插入无效的电子邮件地址时,它会显示错误消息
如果我插入 a@a(这是一个有效的电子邮件地址),则前端验证通过,但在后端,我的 ModelState 在 E-mail 字段中显示错误,说明这是无效的。
如果我插入 a@a.com,验证双方都会通过!
注意:与“电子邮件验证不适用于 MVC”相关的其他 SO 答案的很大一部分,解决方案是使用我已经在使用的 EmailAddress 属性。
查看
@using (Ajax.BeginForm("EnviarMensagemContato", "home", new AjaxOptions { HttpMethod = "POST", OnBegin = "showLoading", OnComplete = "showJsonModalMessage" }, new { @id = "contact-form" }))
{
@Html.AntiForgeryToken()
<div class="col-md-6 lateral-division">
<div class="form-group">
@Html.TextBoxFor(m => m.ContatoViewModel.Nome, new { @class = "form-control required", placeholder = "nome" })
@Html.ValidationMessageFor(m => m.ContatoViewModel.Nome)
</div>
<div class="form-group">
@Html.TextBoxFor(m => m.ContatoViewModel.EmailAddress, new { @class = "form-control required", placeholder = "email" })
@Html.ValidationMessageFor(m => m.ContatoViewModel.EmailAddress)
</div>
<div class="form-group">
@Html.TextAreaFor(m => m.ContatoViewModel.Mensagem, 4, 4, new { @class = "form-control required", placeholder = "mensagem" })
@Html.ValidationMessageFor(m => m.ContatoViewModel.Mensagem)
</div>
</div>
<div class="btn-group pull-right btn-send-message">
<input type="submit" value="enviar" id="enviar-mensagem" class="btn btn-default" />
</div>
}
型号
public class ContatoViewModel
{
[Required(ErrorMessage="campo obrigatório"),
Display(Name = "nome")]
public String Nome { get; set; }
[Required(ErrorMessage = "campo obrigatório"),
Display(Name = "nome"), MaxLength(254,ErrorMessage="email inválido"),
EmailAddress(ErrorMessage="email inválido")]
public String EmailAddress { get; set; }
[Required(ErrorMessage = "campo obrigatório"),
Display(Name = "nome"), MaxLength(500, ErrorMessage = "maximo de 500 caracteres")]
public String Mensagem { get; set; }
}
控制器
public JsonResult EnviarMensagemContato(ModelContainer model)
{
try
{
if (ModelState.IsValid)
{
//zalgo
}
}
}
【问题讨论】:
-
您的视图模型似乎没有 EmailAddress 属性。
-
@qamar 它有,但 asp.net 出于某种原因将数据注释连接在一行中,即:
[required(..), maxlength(..)]而不是单独的行。它在代码上。问候” -
a@a不是有效的电子邮件地址。作为旁注,您可以看到属性 here 使用的正则表达式
标签: c# jquery asp.net-mvc validation