Passer un object aux atsortingbuts HTML

Comment passer un object aux atsortingbuts HTML? Par exemple, j’ai le code suivant:

var attrs = new { id = "myid", style = "color: Red;" }; 

Comment convertir attrs en chaîne de cette manière pour les incorporer dans un balisage HTML:

 id="myid" style="color: Red;" 

Merci d’avance 🙂

Cette fonctionnalité est étonnamment fournie par la classe RouteValueDictionary :

 IDictionary htmlAtsortingbutes = new RouteValueDictionary(attrs); 

Vous pouvez ensuite utiliser ce dictionnaire avec un TagBuilder , que vous utiliserez probablement de toute façon:

 var tagBuilder = new TagBuilder("input"); tagBuilder.MergeAtsortingbutes(htmlAtsortingbutes); tagBuilder.ToSsortingng(TagRenderMode.Normal); 

Vous pouvez le voir dans le code source ASP.NET MVC lui-même; l’un des exemples les plus simples se trouve dans TextAreaExtensions.cs .

MODIFIER:

Afin de convertir correctement “data_attr” en “data-attr”, utilisez la méthode statique AnonymousObjectToHtmlAtsortingbutes .

 IDictionary htmlAtsortingbutes = HtmlHelper.AnonymousObjectToHtmlAtsortingbutes(attrs); 

Vous n’avez pas besoin de convertir en chaîne. Le dernier paramètre pour HTML Helpers est un object. Vous venez de lui donner l’object comme vous l’avez écrit ci-dessus:

Par exemple

 @Html.TextBoxFor(x => x.Foo, new { size = 10, maxlength = 10 }) @Html.TextAreaFor(x => x.Notes, new { @class = "additionalInfo" }) @Html.TextBoxFor(x=>x.Registration.Address.Postcode, new {type="number", @class="postcode numeric", size=5, maxlength=5}) 

D’un autre côté, vous ne devriez probablement pas définir de style directement en ligne avec votre code HTML et utiliser plutôt un classeur / sélecteur CSS avec une feuille de style séparée. L’ID de chaque élément DOM doit également être défini automatiquement lorsque vous utilisez les aides HTML de MVC

Voici comment faire cette conversion:

 var htmlAtsortingbutes = new { id="myid", @class="myclass" }; ssortingng ssortingng_htmlAtsortingbutes = ""; foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(htmlAtsortingbutes)) { ssortingng_htmlAtsortingbutes += ssortingng.Format("{0}=\"{1}\" ", property.Name.Replace('_', '-'), property.GetValue(htmlAtsortingbutes)); } 

PropertyDescriptor appartient à la classe System.ComponentModel