2010-10-17 83 views
2

我有一個關於模型綁定MVC的問題MVC模型綁定限制

說我有一個簡單的POCO,如下所示。

public class Person 
{ 
    public Title Title { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public bool LeadPassenger { get; set; } 
} 

我有一個經過的人集合到一個視圖和查看我想渲染一個單選按鈕,允許用戶從的人的集合中選擇LeadPassenger內的控制器。

現在,爲了這個工作(並且一次只能選擇一個單選按鈕),所有「LeadPassenger」單選按鈕必須共享相同的名稱。但是,使用模型綁定約定似乎是不可能的,因爲每個控件都是以集合中項目的每個屬性命名的。

<input id="Passengers_0_LeadPassenger " name="PolicyMembers[0].LeadPassenger" type="radio" value="true" /> 
<input id="Passengers_1_LeadPassenger " name="PolicyMembers[1].LeadPassenger" type="radio" value="false" /> 

如何克服這個限制嗎?我可以使用jQuery來強制所有的單選按鈕關閉,當一個被選中,但似乎是一個'fudge'!

任何想法?

+0

如果您使用'Html.RadioButton()',這將自動完成。 :) – bzlm 2010-10-17 09:59:48

+0

嗨bzlm。你是對的。但是如果我使用Html.RadioButton(),那麼在提交表單時,我不會在Person對象上獲得LeadPassenger屬性的模型綁定。 – FloatLeft 2010-10-17 13:38:22

回答

0

這裏的訣竅是你試圖完成的任務並不是模型綁定的真正目的,它並不真正意識到數據超出了「行」的範圍。你想在這裏做的是爲主要旅客選擇引入一個新的領域,將價值與個人的唯一標識符和名稱綁定到同一事物上。然後在控制器中將其作爲單獨的變量提取出來,並從那裏映射出來。