2013-08-07 192 views
1

我有一個強類型的視圖,我有一個窗體。我在文本框中顯示聯繫人(對象)的值。聯繫人有一個功能列表。我也有一個數據庫中存在的所有函數的列表。在視圖中,我通過顯示覆選框列出所有功能(值:函數的ID,顯示:函數的名稱)。在此之前,我將聯繫人功能列表與所有功能進行比較,並檢查了聯繫人的功能。這樣的:如何將對象添加到視圖中的列表?

@foreach (extranetClient.Models.Classes.FonctionContact fonction in ViewBag.Fonctions) 
     { 
       string coche = ""; 
       if ((@Model.ListeFonctions).Where(c => c.IdFonction == fonction.IdFonction).Count() > 0) 
        { 
          coche = "checked"; 
        } 

       <input type="checkbox" @coche id="@fonction.IdFonction" />@fonction.LibelleFonction <br /> 
     } 

它看起來像:

enter image description here

但現在,如果用戶檢查一個複選框功能添加到聯繫人,我需要將其保存在聯繫人列表。我找不到如何做到這一點。有人有想法?

回答

1

首先,我們需要修改您的複選框,以便它們正確發佈。當一個複選框被選中時,它將被張貼如下name=value。但我們希望您的所有複選框都發布到集合中,因此名稱將採用此格式function[x],其中x是複選框的索引。該值然後成爲函數的ID。

@{ 
    var i = 0; 
} 
@foreach (extranetClient.Models.Classes.FonctionContact fonction in ViewBag.Fonctions) 
{ 
    string coche = ""; 
    if ((@Model.ListeFonctions).Any(c => c.IdFonction == fonction.IdFonction)) 
    { 
     coche = "checked"; 
    } 

    <input type="checkbox" @coche id="functions[@(i++)]" value="@fonction.IdFonction" />@fonction.LibelleFonction <br /> 
} 

現在創建一個可以接收復選框數據的操作方法。只需提供一個參數即可獲得int的枚舉,假設您的功能ID爲int s。

public ActionResult UpdateFunctions(IEnumerable<int> functions) 
{ 
    // TODO: functions contains IDs of all checked boxes. 
} 

希望這有助於。

+0

OK很好,但它是一個整體的形式,當我們要提交它,我們收到所有提交的數據的功能,'公衆的ActionResult AjouterModifierContact(聯繫contactAModifier) {}' –

+0

如果您發佈到模型中,只要保證模型可以接收'int'的枚舉,並將複選框('function [x]')命名爲模型中的該屬性。 – Jay

+0

我會嘗試,我會給你反饋。謝謝 –

相關問題