ASP.NET MVC TagBuilder.SetInnerText () ne définit pas le texte correctement
-
10-07-2019 - |
Question
Je crée donc une méthode d'extension HtmlHelper et j'ai rencontré un problème lors de l'utilisation de TagBuilder.SetInnerText (). L'assistant génère une étiquette d'option. Voici la source de l'aide:
public static string Option(this HtmlHelper helper, string value, string text, object htmlAttributes) {
TagBuilder tagBuilder = new TagBuilder("option");
tagBuilder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
tagBuilder.MergeAttribute("value", value);
tagBuilder.SetInnerText(text);
return tagBuilder.ToString(TagRenderMode.SelfClosing);
}
À mon avis, j'appelle
<%= Html.Option("value", "text", new { }) %>
mais le texte intérieur de la balise n'est pas défini et il me reste
<option value="value"> </option>
Des idées sur la raison pour laquelle SetInnerText () ne définit pas le texte correctement?
Merci.
La solution
return tagBuilder.ToString(TagRenderMode.SelfClosing) - is the problem
Il essaie de générer une sortie <option value="" />
, où il n’ya nulle part où insérer InnerText.
Faites-le:
return tagBuilder.ToString(TagRenderMode.Normal)
Autres conseils
Je pense que la bonne façon d'utiliser InnerText
est la suivante. Vous devez définir <=> sur Créer une balise, et après avoir défini des attributs supplémentaires.
TagBuilder tagBuilder = new TagBuilder("select")
{
InnerHtml = "set Anything"
};
tagBuilder.MergeAttribute("value", value);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow