2010-02-18 79 views
2

什麼是處理這個問題的最好辦法:ASP.NET MVC 2.0 - IList的<T>的CheckBox

class Option { 
    int id; 
    string name; 
} 

class QuoteItem 
{ 
    IList<Option> options; 
} 

class QuoteViewModel { 
    IList<Option> allOptions; 
    QuoteItem quoteItem; 
} 

基本上,我在allOptions所有可用的選項。我想要一個複選框,當它被選中時,將另一個Option(即使它只是它的id)放入QuoteItem.options列表中。我怎麼做到這一點?最好是一個IList<bool>並且在事實之後綁定它?

回答

2

我建議你先看看這個blog entry從菲爾哈克約模型綁定到一個列表

對於你的情況,你可以使用簡單的模型綁定到IEnumerable<int> options,其中的值將是你選擇的選項的ID。然後

您輸入視圖將是這個樣子:

<form method="post" action="/QuoteItems/SetOptions"> 
     <input type="hidden" name="options" value="1" /> 
     <input type="hidden" name="options" value="4" /> 
     <input type="hidden" name="options" value="2" /> 
     <input type="hidden" name="options" value="8" /> 
     <input type="submit" /> 
    </form> 

隱藏輸入包含您選擇optionId的,注意名稱屬性,是每一個隱藏的輸入相同。默認的模型綁定器可以將它綁定到一個整數列表。

接下來需要做的事情是在客戶端添加/刪除隱藏的選項輸入,具體取決於您的「所有選項」選擇控件中是否選擇了一個項目。

+0

該帖子相當過時。我正在使用MVC 2.0 – 2010-02-19 12:31:15

+0

我相信它仍然在MVC 2.0中有效,至少在預覽1 – Rik 2010-02-19 13:55:41