Asp.net-Mvc
具有數據屬性的 SelectListItem
無論如何在 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是一組項目,這些項目公開了這些屬性中的每一個。那麼你應該準備好了。如果您想要可重用性,請考慮將其作為可枚舉城市的任何內容的編輯器模板