我在遠程驗證時遇到問題。在MVC3中使用遠程驗證時的空值
我有一個viewmodel的屬性,我添加了一個遠程驗證器,但是當我運行窗體並在文本框中輸入一個字符串時,傳遞給控制器的值爲null。
在視圖模型的屬性看起來是這樣的:
[Required(ErrorMessage = "Enter the host's name")]
[Remote("ValidateHostFullName", "BoardroomBooking", ErrorMessage = "Enter a different name")]
[DisplayName("Host's Name")]
public string HostFullName { get; set; }
在控制器驗證的代碼如下所示:
public ActionResult ValidateHostFullName([Bind(Prefix="BookingReceptionViewModel")]string HostFullName)
{
if (!HostFullName.Equals("John Smith"))
{
return Json(true, JsonRequestBehavior.AllowGet);
}
return Json("{0} is not allowed", JsonRequestBehavior.AllowGet);
}
的字符串HostFullName的數值顯示爲空不不管輸入框中的內容如何。我已經嘗試過,沒有綁定前綴,這沒有什麼區別。
我試過這個模型,它的工作原理,它似乎只有一個問題,當我使用viewmodel。
感謝
馬克
生成的HTML中相應輸入字段的「name」是什麼?在使用FireBug進行檢查時,在AJAX請求中發送的確切值是什麼? –
@DarinDimitrov字段的名稱生成爲HostFullName。該請求在FireBug中顯示爲「GET/BoardroomBooking/ValidateHostFullName?callback = jQuery15104607706305105239_1319095613374&HostFullName = John + Smith&_ = 1319095674721」。 –
回調參數來自哪裏?此外,查詢字符串參數被稱爲「HostFullName」,因此您不需要在動作中使用Bind屬性。但我認爲你也有這個請求的其他問題。它看起來像一個JSONP請求,這不是它應該的。 –