我有一个MVC网站,当一个领域失去焦点时,它将读取后端数据库并确定该值是否有效。如果该值有效,则会在页面上填写另外两个字段。我遇到的问题是,该值无效,我想在文本框下显示一条错误消息,就像验证消息一样。MVC 4 - 来自控制器的错误消息没有显示在视图中
的观点....
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(m => m.HSDRepCode)
@Html.TextBoxFor(m => m.HSDRepCode, new { placeholder = "Enter your HSD Rep code...", @class = "contact-name" })
@Html.ValidationMessageFor(m => m.HSDRepCode)
</div>
调用脚本...
$("#HSDRepCode").blur(function() {
$.ajax({
url: "/CRM/ValidateHSDRep",
type: "POST",
data: $('form').serialize(),
dataType: "json"
}).done(function (model) {
$("#HSDRepCode").val(model.HSDRepCode);
$("#HSFirstName").val(model.HSFirstName);
$("#HSLastName").val(model.HSLastName);
});
});
模型....
public class LeadInfo
{
[Display(Name = "Products of Interest")]
[Required(ErrorMessage = "Please select a product of interest")]
public string Product { get; set; }
[Display(Name = "HSD Rep code")]
[Required(ErrorMessage = "Please enter your HSD Rep code")]
[StringLength(6)]
public string HSDRepCode { get; set; }
[Display(Name = "HSD Rep first name")]
[Required(ErrorMessage = "Please enter your first name")]
public string HSFirstName { get; set; }
[Display(Name = "HSD Rep last name")]
[Required(ErrorMessage = "Please enter your last name")]
public string HSLastName { get; set; }
[Display(Name = "Doctor's first name")]
[Required(ErrorMessage = "Please enter the doctor's first name")]
public string FirstName { get; set; }
[Display(Name = "Doctor's last name")]
[Required(ErrorMessage = "Please enter the doctor's last nname")]
public string LastName { get; set; }
[Display(Name = "Doctor's phone number")]
[Required(ErrorMessage = "Please enter the doctor's phone number")]
[Phone]
public string PhoneNumber { get; set; }
[Display(Name = "Doctor's e-mail")]
[Required(ErrorMessage = "Please enter the doctor's e-mail")]
[EmailAddress]
public string EmailAddress { get; set; }
}
和控制器....
public ActionResult ValidateHSDRep(LeadInfo leadInfo)
{
HSDRep hsdRep = new HSDRep();
hsdRep = CRMModels.ValidateHSDRepCode(leadInfo.HSDRepCode);
if (hsdRep.FirstName != null)
{
leadInfo.HSFirstName = hsdRep.FirstName;
leadInfo.HSLastName = hsdRep.LastName;
return Json(leadInfo);
}
else
{
ModelState.AddModelError("HSDRepCode", "Invalid HS Representative Code");
return Json(leadInfo);
}
}
当文本框失去焦点时调用控制器例程。
如何在文本框“HSDRepCode”下显示消息“无效代表码”?
感谢, 加里
更新:我已经添加了调用该控制器功能的Ajax代码。 更新2:我改变了返回返回Json。
你为什么有两个'返回JSON()'和'返回查看()' - 你怎么调用此? – 2015-03-24 22:47:47
Re:你的编辑 - 你正在返回'json',而不是视图。你不会碰到else块,所以没有任何东西被添加到'ModelState'中,如果它确实存在,那么ajax调用会失败,因为它会返回html(不是json) – 2015-03-24 22:56:40
将它更改为返回Json后,它仍然不显示错误消息。 – Gary 2015-03-24 23:03:53