2011-10-19 33 views
2

我在遠程驗證時遇到問題。在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。

感謝

馬克

+1

生成的HTML中相應輸入字段的「name」是什麼?在使用FireBug進行檢查時,在AJAX請求中發送的確切值是什麼? –

+1

@DarinDimitrov字段的名稱生成爲HostFullName。該請求在FireBug中顯示爲「GET/BoardroomBooking/ValidateHostFullName?callback = jQuery15104607706305105239_1319095613374&HostFullName = John + Smith&_ = 1319095674721」。 –

+1

回調參數來自哪裏?此外,查詢字符串參數被稱爲「HostFullName」,因此您不需要在動作中使用Bind屬性。但我認爲你也有這個請求的其他問題。它看起來像一個JSONP請求,這不是它應該的。 –

回答

2

我有同樣的問題。進入ValidateHostFullName()的參數必須與輸入名稱相同。

+0

我同意回覆。我試了一下。該參數必須與輸入名稱匹配,但不區分大小寫(我的輸入名稱是混合大小寫,但參數可以全部小寫)。這是非常糟糕的限制。 –

0

我有同樣的問題。呈現的html控件沒有用類名作爲前綴,但是在遠程驗證代碼中,我通過在classname.propertyname前加上了綁定。刪除這個綁定解決了我的問題。或者通過前綴只屬性名稱也適用於我。