[解決済み] Html.DropdownListForの選択値が設定されない件
質問
Html.DropDownListForの選択された値を設定するにはどうしたらよいでしょうか?私はオンラインで見てきましたが、それは以下のように第4パラメータを使用することによって達成することができると見ました。
@Html.DropDownListFor(m => m, new SelectList(Model, "Code", "Name", 0), "Please select a country")
すると、セレクトリストがこのように表示されます。
<select id="ShipFromCountries" name="ShipFromCountries">
<option value="">Please select a country</option>
<option value="GB">United Kingdom</option>
<option value="US">United States</option>
...
</select>
しかし、なぜかUnited Kingdomが選択されたままなのですが、"Please select a country"を選択させたいのですが、どうすればよいでしょうか?
どなたか、これを実現する方法をご存知でしょうか?
EDIT
機能に若干の変更があったため、コードを更新しましたが、まだこの問題が発生しているようです。これは、私の見解です。
@Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")
1
のIdです。
option
の ID であり、選択されるようにするために
option
のテキストでも試してみましたが、これもうまくいきません。
何かいい案はありませんか?
どのように解決するのですか?
あなたのコードには概念的な問題があります。
まず ,
@Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")
DropDownListForを使用する場合、最初のパラメータは、フォームを送信した後に選択した値が格納されるプロパティです。 ですから、あなたの場合は
SelectedOrderId
をモデルの一部かそのようなものとして、この方法で使用するために。
@Html.DropDownListFor(n => n.SelectedOrderId, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")
第二 ,
ViewBagを使うのはともかく、それは間違いではありませんが、もっと良い方法があります(代わりにその情報をViewModelに入れる)。 を置いたプロパティと同じ名前である場合、quot;little bug" (または予期しない動作)があります。 を置いたプロパティと同じ名前である場合に発生します。これを避けるには、項目のリストを保持するプロパティを命名するときに別の名前を使用するだけです。
この問題を回避し、より良いMVCコードを書くために、私があなただったら使うであろういくつかのコードです。
ビューモデルです。
public class MyViewModel{
public int SelectedOrderId {get; set;}
public SelectList OrderTemplates {get; set;}
// Other properties you need in your view
}
コントローラです。
public ActionResult MyAction(){
var model = new MyViewModel();
model.OrderTemplates = new SelectList(db.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1);
//Other initialization code
return View(model);
}
Viewで。
@Html.DropDownListFor(n => n.SelectedOrderId, Model.OrderTemplates, "Please select an order template")
関連
-
[解決済み] ファイルまたはアセンブリ 'System.Web.Mvc' を読み込めませんでした。
-
[解決済み] Automapper のタイプマップ構成がない、またはサポートされていないマッピング - エラー
-
[解決済み] 既存のデータベースの選択されたテーブルからDbContextをScaffoldすることができますか[重複]。
-
[解決済み] クライアントから危険な可能性のあるRequest.Formの値が検出された
-
[解決済み] ELMAHをASP.NET MVCの[HandleError]属性で動作させる方法は?
-
[解決済み] ASP.NET MVCのビューを文字列としてレンダリングする方法は?
-
[解決済み】MVCアプリケーションでデータをキャッシュする方法
-
[解決済み】ASP.NET MVCのフォームでチェックボックスを処理するにはどうすればよいですか?
-
[解決済み] MVCのHTMLヘルパーで生成されたHTML要素にclass属性を追加するにはどうすればよいですか?
-
[解決済み] Visual Studio 2012 または Visual Studio 2013 で古い MVC プロジェクトを開くにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】VS 2015でコントローラからビューを追加できない : "選択されたコードジェネレータの実行にエラーが発生しました"
-
[解決済み】@sectionスクリプトとは何か、何のために使うのか?
-
[解決済み] glyphicons-halflings-regular.woff2 not foundに関するエラーを削除する方法
-
[解決済み] データベースに 'AspNetRoles' という名前のオブジェクトがすでに存在します。
-
[解決済み] ファイルまたはアセンブリ 'System.Web.Mvc' を読み込めませんでした。
-
[解決済み] Entity Framework Code Firstを使用して一意制約を設定することは可能ですか?
-
[解決済み】MVCアプリケーションでデータをキャッシュする方法
-
[解決済み] ASP.NET MVCでリクエストスロットルを実装するための最良の方法は?
-
[解決済み】Html.ActionLinkを使用して別のコントローラのアクションを呼び出す
-
[解決済み] Entity Frameworkのデータベースを再作成する方法は?