82

データ属性を使用して ViewModel に事前設定された SelectList を持つ方法はありますか?

私はやってみたいです

@Html.DropdownListFor(m=> m.CityId, Model.Cities);

したがって、次のようなコードが生成されます。

<select id="City" class="location_city_input" name="City">
    <option data-geo-lat="-32.522779" data-geo-lng="-55.765835" data-geo-zoom="6" />
    <option data-geo-lat="-34.883611" data-geo-lng="-56.181944" data-geo-zoom="13" data-geo-name="Montevideo" data-child=".state1" value="1">Montevideo</option>               
    <option data-geo-lat="-34.816667" data-geo-lng="-55.95" data-geo-zoom="13" data-geo-name="Canelones, Ciudad de la Costa" data-child=".state41" value="41">Ciudad de la Costa</option>
</select>
4

5 に答える 5

118

これが簡単な解決策です。

すべてを .NET コードの拡張メソッドで記述する必要はありません。MVC の優れた点の 1 つは、独自の HTML を簡単に作成できることです。

MVC4 では、式ツリー上の要素の ID と名前をヘルパーHTML.NameForHTML.IdFor

<select name="@Html.NameFor(Function(model) model.CityId)"
        id="@Html.IdFor(Function(model) model.CityId)"
        class="location_city_input">
    @For Each city In Model.Cities
        @<option value="@city.Value"
                 @(If(city.Value = Model.CityId, "selected", ""))
                 data-geo-lat="@city.Lat"
                 data-geo-lng="@city.Lng"
                 data-geo-zoom="@city.Zoom">
            @city.Text
        </option>
    Next
</select>

仮定Model.Citiesは、これらの各プロパティを公開するアイテムのコレクションです。その後、すべての設定が必要です。

再利用性が必要な場合は、都市の列挙可能なものすべてのエディター テンプレートにすることを検討してください。

于 2014-12-31T20:00:16.660 に答える