我有一個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