0

ページのレンダリング時にドロップダウン リストから特定のオプションを選択しようとしています。

私のコントローラーには、次のコードがあります。
ViewBag.PropertyId = new SelectList(db.Properties, "PropertyId", "PropertyName", id.ToString());

私の見解では、これは機能しません。選択したオプションは常に最初のオプションです。
@Html.DropDownList("PropertyId", (SelectList)ViewBag.PropertyId)

これは私の見解では機能しますが、正しいオプションが選択されています。ただし、選択リストの名前を PropertyId にして正しく投稿する必要があるため、これを保存できません。
@Html.DropDownList("sadgfsadsaf", (SelectList)ViewBag.PropertyId)

誰かが私がここで何をすべきかを理解するのを手伝ってもらえますか? Viewbag の代わりにビューモデルを使用する必要があることは理解していますが、これを最初に機能させたいだけです。

ありがとうございました

4

2 に答える 2

2

以前にも同じ問題がありましたが、名前の衝突でした。ドロップダウンや値の名前を変更してみて、何が起こるかを確認してください。

于 2013-01-30T20:44:50.497 に答える
0

同じコントローラーとビューに再度ポストバックするときに、コントローラーの状態を変更したい場合にも、名前の衝突が発生する可能性があります。

投稿されたモデルの状態を ModelState オブジェクトに保持し、投稿された状態をレンダリングされたビューに復元します。コントローラーでモデルの状態を変更するには、ModelState.Remove("PropertyId")すぐに実行または設定する必要があります。

ModelState["PropertyId"].Value = new System.Web.Mvc.ValueProviderResult(id.ToString(), id.ToString(), System.Globalization.CultureInfo.CurrentCulture);
于 2013-03-30T10:27:18.023 に答える