0

質問のグリッド/テーブルを表示するアプリケーションがあり、各質問にはステータス ドロップダウンがあります。約 1 ~ 200 の質問があり、各ステータス ドロップダウンには、グリッドのすべての行で同じ約 50 の選択肢があります。

私のコントローラーは、次のモデルをビューに渡します。

IEnumerable<Question.Grid>

次に、私の見解では、グリッド テーブルの詳細行を出力する次のコードがあります。

<tbody class="grid">
@if (Model != null) {
  foreach (var item in Model) {
    @Html.DisplayFor(model => item, "QuestionDetail")
  }
}
</tbody>

各グリッド線にはステータス ドロップダウンがあり、ドロップダウンのデータ (すべての行で同じ) を QuestionDetail ビューに渡したいと思います。私の見解では、次のようなものを得ることができるように、この追加情報を送信するための最良の方法は何ですか:

@Html.DropDownList("Question.Status", Status, new { id = "StatusID"})
4

1 に答える 1

0

まず、ビューモデルの IEnumerable を渡さないでください。むしろ、次のようにプロパティとして IEnumerable を持つものを定義します。

public class EnumViewModel
{
   public IEnumerable<Question.Grid> Questions { get; set; }
   public int MyAdditionalFieldIWantedToPassAlong { get; set; }
}
public class Question.Grid
{
  public string MyExistingFields { get; set; }
  // as many as you had
  public string MyAdditionalFields { get; set; }
  // as much as you want
}

ビューにモデルのリストの代わりに 1 つのモデルを受け取るようにします@model EnumViewModel。この時点で、追加情報を EnumViewModel 内に追加するのは非常に簡単です。この情報が EnumViewModel に含まれている必要があります。より具体的な質問の場合は、そこに置いて、その StatusID を含むリスト内のすべてのモデル内で項目を楽しんでください。

ビューが必要とするデータを保持する単なるコンテナと考えてください。

  1. ディスプレイと
  2. コントローラーにポストバック

お役に立てれば。

于 2012-08-14T02:15:41.030 に答える