我有一个名为 Week 的字典属性:
public IDictionary<DayOfWeek, Day> Week { get; private set; }
我正在尝试将其值传递给HiddenFor
(Days)
@Html.HiddenFor(x => x.Week.Values)
它必须是模型的属性,所以我不能这样做x.Week.Values.ToList();
我将如何将字典值传递给Html.HiddenFor
?
我有一个名为 Week 的字典属性:
public IDictionary<DayOfWeek, Day> Week { get; private set; }
我正在尝试将其值传递给HiddenFor
(Days)
@Html.HiddenFor(x => x.Week.Values)
它必须是模型的属性,所以我不能这样做x.Week.Values.ToList();
我将如何将字典值传递给Html.HiddenFor
?
好吧,自从您使用以来HiddenFor
,我将假设您需要在表单发布时重新绑定字典的值。要将字典绑定到视图,您需要执行以下操作:
@foreach (var key in Model.Week.Keys)
{
Html.DisplayFor(model=>model.Week[key]);
}
字典中的每个值都将被赋予其自己的隐藏输入字段,具有 name 属性:
name="Week.{key here}
另一方面,如果您只需将模型中的数据发送到客户端,以便您可以在 JavaScript 中对其进行处理,您可能希望将其作为 JSON 写入页面。
<script type="text/javascript">
@Html.Raw(Json.Encode(Model.Week))
</script>
我会使用:
@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">