2012-04-29 51 views
1

我有一個包含字典的視圖模型「MyClass的」:編輯詞典中MVC3

Dictionary<string, bool> columns {get; set;} 

,它有鑰匙,現在值

columns.Add("Name", true); 
columns.Add("Type", true); 

,我想讓用戶編輯MyClass及其字典。

對於每個鍵我想顯示它的關鍵字並使其能夠檢查\ unchek它的值(true \ false),這樣輸入的名稱將是正確的編輯名稱。由於字典有許多鍵,我需要用「foreach」或「for」來表示。

我該怎麼做?

回答

0
+0

它並沒有真正回答我。我知道MVC ... – TamarG 2012-04-29 09:31:12

+1

@tamarg那麼你必須知道如何生成html與輸入,複選框,如何在控制器中傳遞模型以及如何發送json到控制器動作。 – 2012-04-29 09:34:50

+0

我是爲名單做的,但是我不能爲班級的字典做。你有沒有讀過我的問題? – TamarG 2012-04-29 09:40:15

0

開始你需要寫這樣的事情在你的瀏覽

@using (Html.BeginForm()) { 

    <fieldset> 
     <legend>MyClassViewModel</legend> 
     @foreach (var item in Model.Columns){ 
      @Html.Label(item.Key) 
      @Html.CheckBox(item.Key, item.Value) 
     } 
     <p> 
      <input type="submit" value="Save" /> 
     </p> 
    </fieldset> 
} 

和你的觀點必須被綁定在這種情況下

@model MvcDemoApp.Models.MyClassViewModel 

或作爲模型替代品

@foreach (var item in Model.Columns) 
    { 
     @item.Key 
     <input type="checkbox" id="@item.Key" checked="@item.Value" /> 
     <input type="hidden" value="@item.Value" /> 
     <br /> 
    } 

,或者嘗試使用CheckBoxList的自定義幫助社區

http://weblogs.asp.net/gunnarpeipman/archive/2011/05/05/asp-net-mvc-implementing-checkboxlist.aspx

http://www.codeproject.com/Articles/292050/MVC3-Html-CheckBoxList-custom-extension

+0

它沒有幫助,因爲html是 並且名稱不適合字典的名字。 – TamarG 2012-04-29 10:01:52

+0

在我的結尾,它就像 「Type」真正... 您能否詳細說明您的問題並分享您在視圖中綁定的模型以及從控制器傳遞的模型? – Adil 2012-04-29 10:14:09

+0

僅供參考我正在使用MVC 3和Razar – Adil 2012-04-29 10:17:04

0

在你的情況,你想是這樣的,默認粘結劑瞭解name=""格式:

<input type="checkbox" name="columns[0].Value" value="Key0 string value" /> 
<input type="checkbox" name="columns[1].Value" value="Key1 string value" /> 

不幸的是,默認幫助者不完全支持這個,所以你必須明確地寫出name=""。例如:

@Html.CheckBox("columns[" + i + "].Value", new { value = columns[i].Key }); 

this博客文章中瞭解更多關於這種綁定的信息。