2012-10-11 36 views
3

我有一本字典屬性叫周:MVC3 - HiddenFor字典值

public IDictionary<DayOfWeek, Day> Week { get; private set; } 

而且我想通過自己的價值觀關閉以HiddenFor(天)

@Html.HiddenFor(x => x.Week.Values) 

它必須是一個模型的屬性,所以我不能做x.Week.Values.ToList();

我將如何去將字典值傳遞到Html.HiddenFor

回答

2

自從您使用HiddenFor以來,我將假設您需要重新綁定表單上的字典值。要綁定一個字典視圖,你將需要做這樣的事情:

@foreach (var key in Model.Week.Keys) 
{ 
    Html.DisplayFor(model=>model.Week[key]); 
} 

字典中的每個值將被賦予它自己隱藏的輸入字段,名稱屬性: name="Week.{key here}

另一方面,如果您需要做的只是將模型中的數據發送到客戶端,以便您可以使用JavaScript對其進行操作,那麼您可能需要考慮將它作爲JSON寫入頁面。

<script type="text/javascript"> 
@Html.Raw(Json.Encode(Model.Week)) 
</script> 
+0

唔怪雖然這'@ Html.EditorFor(X => x.Week)'不通過他們去,但。知道爲什麼? –

+0

我想它並不適合開箱即用,但如果您想要,您可以創建一個自定義編輯器 –

0

我會用:

@foreach (var key in Model.Week.Keys) 
{ 
    @Html.HiddenFor(model=>model.Week[key]); 
} 

的 '@' 的HTML似乎有必要對剃鬚刀進行輸出前的隱藏字段。

它輸出這樣的事情每個鍵:

<input data-val="true" data-val-number="The field Int32 must be a number." 
    data-val-required="The Int32 field is required." id="Week_5_" name="Week[5]" 
    type="hidden" value="3">