2010-01-07 72 views
3

我有一個asp mvc 2應用程序,我想顯示一個用戶可以選擇的複選框列表,基於列表中的記錄列表數據庫。爲了顯示列表,我的模型包含一個List對象,該視圖有一個foreach,併爲列表中的每個項目輸出Html.CheckBox。在視圖中使用動態列表的複選框,如何創建模型

由於列表是動態的,因爲模型不能爲每個複選框指定特定屬性,是否有一種方法可以讓模型填充選定的複選框?或者我必須自己手動遍歷表單變量?

編輯:額外的細節,每sabanito的評論 因此,在一個簡單的視圖/模型的情況下,如果我的模型有一個名爲Property1屬性,那麼我認爲輸出爲Property1一個文本框,當表單通過張貼提交按鈕,mvc框架將自動填充包含輸入到文本框中的文本的Property1的模型,並將該模型傳遞給控制器​​操作。

因爲我正在處理用戶可以檢查的動態選項列表,所以我無法在模型中編寫顯式布爾屬性,並在我的視圖中顯式創建複選框。鑑於我的列表是動態的,我想知道是否有方法創建我的模型和視圖,以便mvc框架能夠在發佈表單時正確填充模型。

+0

您能否更好地解釋一下您在成功將其顯示給用戶後對複選框所做的操作。您是否在Controller Method中收到帖子的問題? – sabanito 2010-01-07 17:38:12

回答

3

這裏是我會做:

你是否有產生的複選框的動態的任何問題?

如果沒有,創建您的視圖模型一個屬性,它是:

public List<string> CheckboxResults { get; set; } 

當生成你的複選框,在視圖確保他們所有共享的名稱=「CheckboxResults」。當MVC將你的ViewModel作爲action方法的參數時,它會自動綁定並將所有「CheckboxResults」結果放入List(以及其他ViewModel屬性)中。現在你有一個動態列表,根據你的用戶檢查哪個複選框,你可以發送到你的DomainModel或任何地方。

很酷的東西。讓我知道如果您在動態生成複選框時遇到問題,那麼與模型綁定到列表相比,這是一個單獨的問題。

1

使用精確反映您的視圖的ViewModel,並將您的域模型映射到視圖模型。

起初,在視圖中直接使用域模型似乎是適當的,因爲沒有比使用它們更簡單的理由。然而,隨着時間的推移,視圖變得越來越複雜,你最終會在你的視圖中放置一個TON條件邏輯,並最終得到意大利麪條。爲了減輕這一點,我們通常創建一個ViewModel,它與視圖1:1相關聯。

+0

@LuckyLindy - 我無法真正做到這一點,因爲選項列表是數據庫驅動的,所以我不知道在設計時什麼選項將是 – Jeremy 2010-01-07 17:57:35

+1

你仍然可以做我在說什麼...只是添加viewmodel中的數組/列表控件的源代碼將爲您處理 – 2010-01-08 06:05:06

相關問題