1

私のホームページには、人々が家を検索できる検索フォームがあります。家を検索してビューに表示するコントローラーとアクションにリダイレクトします。

結果ビューには、このようなリストがいくつかあります。

<select name="priceFrom">
    <option value="0">€0</option>
    <option value="100000">€100.000</option>
    <option value="200000">€200.000</option>
</select>

ビューにはモデルが含まれています:@model Irrelevant.Namespace.ViewModels.SearchResults

彼らがホームページで選択した値を選択したいのですが、それは SearchResults ViewModel に保存されています。私が行っていた WebFormsでは、これを達成するためのクリーンな方法を提供する MVC に相当するものはありますかBind()?Eval()

4

2 に答える 2

2

SelectListItemSelectedによって尊重されるプロパティがありますHtml.DropDownListFor<>()

のマークアップを手動で宣言している場合はselects、機能的ですが、次のようなエレガントではないソリューションになります。

<select name="priceFrom">
    <option value="0">€0</option>
    <option value="100000" @(Model.SomeCondition ? "selected" : "" )>€100.000</option>
    <option value="200000" @(Model.SomeCondition ? "selected" : "" )>€200.000</option>
</select>

selected属性の存在により、ユーザーエージェントが「真」として扱う可能性があることを忘れないでください。

理想的には、すべてのドロップダウンリストはビューモデルから生成されます。ビューモデルを作成するときに、以前の条件(別のページでの選択など)を評価Selectedし、適切な項目に設定します。

于 2013-03-09T18:16:59.447 に答える
2

あなたはすべてのオプションのために以下をしなければなりません

<select name="priceFrom">
   <option value="0" @(Model.PriceFrom.ToString().Equals("0") ? "selected":"")>€0</option>
   <option value="100000" @(Model.PriceFrom.ToString().Equals("100000") ? "selected":"")>€100.000</option>
   ...
</select>

MVCには@Html.DropDownListFor、指定された選択値でドロップダウンリストに直接バインドできるリストプロパティがモデルに必要なメソッドを利用できるもう1つの方法があります。

于 2013-03-09T18:18:38.537 に答える