Le Razor "TagHelper" asp-items
ajoutera un <option>
à un <select>
pour chaque valeur dans le SelectList
. Je veux modifier chacun de ces enfants.TagHelper; comment modifier les enfants dynamiquement ajoutés
Spécifiquement je veux désactiver certains d'entre eux (c'est-à-dire ajouter disabled="disabled"
).
Encore plus spécifiquement je veux désactiver dynamiquement certains d'entre eux; J'utilise angulaire donc je pourrais ng-disabled="{dynamic_boolean_which_determines_disabled}"
. Cela signifie que l'option peut être désactivée au début, mais une fois que l'utilisateur a effectué une modification, l'option peut être désactivée (sans rechargement de page). Angulaire devrait prendre soin de cela; Je pense que angulaire et TagHelpers devraient travailler ensemble en théorie ...
Je pensais:
je pouvais accéder en quelque sorte un IEnumerable des enfants <option>
balises qui seraient créés (soit un pour chaque élément de la SelectList
), itérer les enfants balises et SetAttribute ("désactivé") ou SetAttribute ("ng-handicapés") ...
J'ai essayé:
- Créer mon propre TagHelper qui cible le
select[asp-items]
, et essaye de GetChildContentAsync() et/ou SetContent pour atteindre un IEnumerable<option>
tags et les itérer et traiter chaque, mais je pense que cela me permettra seulement de modifier le InnerHtml entier comme une chaîne; se sent hacky pour faire un String.replace, mais je pourrait le faire si c'est ma seule option? à savoirChildrenContent.Replace("<option", "<option disabled=\"...\"")
- Créer ma propre TagHelper qui cible les
option
éléments qui sont des enfants de laselect[asp-items]
, donc je peux individuellement processus chacun. Cela fonctionne, mais pas sur le<option>
ajouté dynamiquement créé parasp-items
, il fonctionne uniquement sur les balises "littérales"<option>
que je mets effectivement dans mon balisage cshtml.
Je pense que ça va fonctionner, mais pas idéale:
- Comme je l'ai dit plus haut, je pense que je peux obtenir le résultat de asp-éléments dynamiques
<option></option> <option></option>
, en tant que chaîne de TagHelper, et faire une chaîne de remplacement, mais je préfère ne pas travailler avec des chaînes directement ... - Je suspecte (je ne l'ai pas essayé) que je puisse faire le travail de
asp-items
moi-même; c'est-à-direcustom-items
. Mais ensuite, je recréais la roue en refaisant le travail queasp-items
aurait pu faire pour moi?
Tout va mentionner [@ Daniel J.G.] (https://stackoverflow.com/users/1836935/daniel-j-g) parce qu'ils semblent savoir beaucoup. Mais je suppose que "@" ing cet utilisateur [peut ne pas fonctionner comme je l'espère:)] (https://meta.stackexchange.com/questions/43019/how-do-comment-replies-work) –