我發現了一個奇怪的場景,防止布爾?正確地發送回控制器。這是一個非常具體的問題,因此請按照重新創建的步驟操作。ASP.Net MVC3模型綁定錯誤
應用程序必須作爲虛擬文件夾部署在IIS中,以便/ home/Test URL不是/ Virtual/Home/Test。
首頁控制器:
[HttpGet]
public ActionResult Test(int? temp, bool? testBool)
{
return View(testBool);
}
/主頁/測試視圖(剃刀CSHTML):
@model bool?
@{
ViewBag.Title = "Test";
}
@using (Html.BeginForm("Test", "Home", FormMethod.Get))
{
@Html.CheckBox("testBool", Model ?? false, new { onchange = "this.form.submit();" })
@Html.Label(Model == true ? "True" : "False")
}
在回來後的布爾?由於int而不會使其成爲控制器?之前它在參數列表中。這可以通過把布爾解決?在int之前?在參數列表中,但顯然你不應該這樣做。如果不在IIS上的虛擬文件夾中,它也可以正常工作。如果使用POST方法也存在同樣的問題,但是發佈的是bool而不是bool?可以工作,但如果不在虛擬文件夾中則不需要,所以不必這樣做。
有沒有其他人經歷過這個,有什麼解釋爲什麼綁定失敗或者它只是一個MVC3中的錯誤?
如果這只是一個錯誤,有沒有人知道什麼是提交錯誤報告正確的ASP.Net MVC頻道?
更新:
我發現,如果你有在動作參數的任何數量的可空變量,只有第一個將永遠工作者和所有其他人將無法被填充。任何人都知道這是設計還是錯誤?
工作!優秀。按照說明在Global.asax.cs中只添加你說的那一行到Application_Start方法。開始擔心沒有人會得到這個答案。希望這個錯誤能夠在未來的更新中由MVC團隊解決。謝謝你的幫助。 – 2011-05-05 09:43:53
太棒了,@克里斯。很高興爲你工作。奇怪的是,它在當地調試時很有效,這讓我想知道我的測試服務器上安裝了什麼版本......:) – Buildstarted 2011-05-05 14:24:20
也許你擁有比我更新的MVC3版本。我將不得不檢查是否有更新的版本可用。你是否真的擁有像/ Virtual/Home/Test這樣的虛擬目錄?如果不正確的話,會有很多比特會導致它在我的帖子中詳述的所有內容。 – 2011-05-05 14:26:22