SelectListItem avec des attributs data-
Est-il de toute façon pour avoir un SelectList préenregistrés sur ViewModel avec des attributs data -?
Je veux faire
@Html.DropdownListFor(m=> m.CityId, Model.Cities);
de sorte qu'il génère un code comme :
<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>
Vous devez vous connecter pour publier un commentaire.
Voici la solution la plus simple.
Tout n'a pas à être écrit avec l'extension de la méthode à .NET code. Une des grandes choses au sujet de MVC est qu'il vous donne un accès facile à construire votre propre code HTML.
Avec MVC4, vous pouvez obtenir l'id et le nom de l'élément sur l'expression de l'arbre avec les aides
HTML.NameFor
etHTML.IdFor
En supposant
Model.Cities
est une collection d'éléments qui exposent chacune de ces propriétés. Ensuite, vous devriez être tous ensemble.Si vous voulez réutilisabilité, d'envisager de faire un éditeur de modèle pour tout ce qui est une Énumération de Villes
selected="@city.Value == Model.CityId"
et il génère le balisage de droit (soitselected="selected"
ou rien)selected="@(city.Value == Model.CityId)"
Html.GetUnobtrusiveValidationAttributes
), mais ce n'est pas assez. Regardez cette réponse pour une chemise, ou vous pouvez écrire un helper HTML pour le rendre plus facile à lire: stackoverflow.com/a/37748259/263832Vous aurez à étendre SelectListItem, puis d'étendre DropDownListFor utilisation de l'étendue SelectListItem.
Jetez un oeil à cette solution:
L'ajout de classe html tag sous <option> en Html.DropDownList
MVC quand il convertit les noms des objets à des noms d'attributs, il relaces "_" par "-", ce son:
PAS MA RÉPONSE, RÉPONSE le CRÉDIT VA À Propos de bruce (sqlwork.com) à partir de l'ASP>Forums du NET.
Comment puis-je ajouter de la data- attribut dans dropdownlistfor htmlAttributes?
VOULAIS JUSTE AIDER CAR CELA M'A SAUVÉ DE CODAGE D'UN HACK! PROFITEZ de.
select
pas à chaqueoption
J'ai eu une demande similaire, j'ai créé une extension. Espérons que cela aide pour ceux qui souhaite créer une extension.
Voici comment j'ai fini par le faire sans une extension, mais en permettant à la discrète validation pour continuer à travailler, & être lié à un ViewModel de la propriété.
Créé un Helper Html pour obtenir la validation des attributs comme une chaîne de caractères:
Utiliser cette aide dans un
select
liste dans la vue:Cela donnerait quelque chose comme ceci:
Je vais laisser le conditionnel
data-
attributs à vous car ceux-ci sont juste une question de formation à la appropriée de Rasoir expressions.