0

ajax で厳密に型指定されたビュー モデルで html.dropDownList ヘルパーを使用しようとしています。プロジェクトの性質上、コードを投稿できません。

ここで基本的に私がやっていることは...

  • 厳密に型指定されたビュー モデルを介して mvc ビューをロードする
  • コントローラーメソッドに ajax ポストを行うボタンをクリックする
  • TryUpdateModel を使用してビュー モデルを解析する
  • リクエストの処理
  • ajax リクエストの部分ビューのレンダリング

以下にリストされている記事によると、問題は、「ASP.NET MVC は、HTTP POST に応答してビューをレンダリングし、Html ヘルパーを使用している場合、「再表示する可能性が最も高い」と想定していることです。検証に失敗したフォームです。」

http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

「同じフォーム値を再表示する」代わりに、ビュー モデルで html.dropDownList を同じ値に設定する必要があります。

カスタムの dropDownList ヘルパーを知っている人はいますか、またはこれを達成する方法についてのアイデアはありますか?

すでに試したこと/検討したこと

  • ブログによると、モデル状態の項目を手動で削除しました...うまくいきませんでした-ビューモデルの値を取得しませんでした-ドロップダウンリストの最初の項目にデフォルト設定されました

  • 通常の選択リストを書くだけだと考えられていました...しかし、ループで複数の選択リストをレンダリングしているので、これはずさんで面倒です

  • 独自のカスタム dropDownList ヘルパーを作成する...車輪の再発明を避けたい

前もって感謝します

4

1 に答える 1

0

あなたの問題が正確に何であるかは私には完全には明らかではありませんが、私は同様の問題を抱えています。Html.DropDownListFor(、SelectListItem [])ヘルパーを使用しました。ポストバック時に、選択した値に値を設定します。ポストバックビューには、元のモデルのすべてのフィールドが含まれている必要はありません。

@Html.DropDownListFor(model => model.SelectedValue, MyModels.DropDownSelectables());

ここでは、選択した値をmodel.SelectedValue変数として使用し、(個別の)モデル内でselectlistitemsの配列を作成しました。残りはautomagicです。

お役に立てば幸い、D

于 2012-02-03T14:58:05.313 に答える