MVC3 - HiddenFor字典值

时间:2012-10-11 23:31:34

标签: c# asp.net-mvc-3 model-binding

我有一个名为Week的字典属性:

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

我正试图将其值传递给HiddenFor(天)

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

它必须是模型的属性,所以我不能x.Week.Values.ToList();

我如何将字典值传递给Html.HiddenFor

2 个答案:

答案 0 :(得分:2)

自从您使用HiddenFor以来,我将假设您需要在表单帖子上重新绑定字典的值。要将Dictionary绑定到视图,您需要执行以下操作:

@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>

答案 1 :(得分: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">