我試圖按照this,但默認的modelbinder讓我的數組在服務器端爲null。在ASP.NET MVC中使用HTML單選按鈕陣列
HTML:
Question 1:
<input name="list[0]" type="radio" value="1000" />No
<input name="list[0]" type="radio" value="1001" />Yes
Question 2:
<input name="list[1]" type="radio" value="1002" />No
...
控制器動作:
public ActionResult Anamnesis(string[] list)
{
如果我只選擇了第二個 「無」(列表[0]缺少),那麼DefaultModelBinder是不可能將其改造成一個陣列。
Thanx提前!
更新#1
重新格式化基礎上的評論,謝謝!
更新#2
只是一個因子評分:創建一個隱藏的輸入畢竟列表項,並以這種方式它的工作原理。但毫無疑問,這很醜陋。
Question 1:
<input name="list[0]" type="radio" value="1000" />No
<input name="list[0]" type="radio" value="1001" />Yes
<input type="hidden" name="list[0]"/>
Question 2:
<input name="list[1]" type="radio" value="1002" />No
<input type="hidden" name="list[1]"/>
...
令它非常重要:隱藏的價值只提交當無線電處於未選中狀態。這個想法來自ASP.NET MVC幫手。 (順便說一下,我不能使用Html.RadioButton存檔此行爲。)
數組基於C#。將是一個開始。 – 2009-06-17 22:56:22
真的!如果我選擇第一個元素,效果很好 - 但如果我選擇其他選項(列表[2]),則會失敗。看起來默認聯編程序需要一個從零開始的數組。但是,這是不可能的單選按鈕...我可以切換到jQuery創建請求。 – boj 2009-06-17 23:15:02
如果這些是單選按鈕,即它們是互斥的(選擇一個或另一個),那麼你應該給它們相同的名稱。否則,如果名稱不同,它們將被視爲單獨的「集合」,並且可以將它們//都選中! (並且無法取消選擇。) - Mike – Funka 2009-06-17 23:36:25