3

Weekという辞書プロパティがあります。

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

そして、私はその値をHiddenFor(日)に渡そうとしています

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

それはモデルのプロパティでなければならないので、私はできませんx.Week.Values.ToList();

ディクショナリ値をに渡すにはどうすればよいHtml.HiddenForですか?

4

2 に答える 2

4

を使用してHiddenForいるので、フォームの投稿で辞書の値を再バインドする必要があると想定します。辞書をビューにバインドするには、次のようなことを行う必要があります。

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

ディクショナリの各値には、name属性を持つ独自のHiddenInputフィールドが与えられます。 name="Week.{key here}

一方、モデル内のデータをクライアントに送信してJavaScriptで何かを実行できるようにするだけの場合は、JSONとしてページにデータを書き込むことを検討してください。

<script type="text/javascript">
@Html.Raw(Json.Encode(Model.Week))
</script>
于 2012-10-11T23:37:33.497 に答える
1

私は使うだろう:

@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">
于 2017-12-08T02:37:25.917 に答える