Asp.net-Mvc

具有數據屬性的 SelectListItem

  • July 15, 2013

無論如何在 ViewModel 上預填充一個 SelectList 並帶有 data-attributes ?

我想要做

@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>

這是簡單的解決方案。

並非所有內容都必須使用 .NET 程式碼中的擴展方法編寫。MVC 的一大優點是它使您可以輕鬆地建構自己的 HTML。

使用 MVC4,您可以使用助手獲取表達式樹上元素的 id 和HTML.NameFor名稱HTML.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是一組項目,這些項目公開了這些屬性中的每一個。那麼你應該準備好了。

如果您想要可重用性,請考慮將其作為可枚舉城市的任何內容的編輯器模板

引用自:https://stackoverflow.com/questions/17665426