Ce code
<%= Html.LabelFor(model => model.Name) %>
produit cette
<label for="Name">Name</label>
Mais je veux ça
<label for="Name" class="myLabel">Name</label>
Comment tu fais ça?
Ce code
<%= Html.LabelFor(model => model.Name) %>
produit cette
<label for="Name">Name</label>
Mais je veux ça
<label for="Name" class="myLabel">Name</label>
Comment tu fais ça?
Malheureusement, dans MVC 3 le Html.LabelFor() la méthode n'a pas de signatures de méthode qui permettent directement de la déclaration de classe. Cependant, MVC 4 ajoute 2 surcharges qui acceptent une htmlAttributes objet anonyme.
Comme avec tous les HtmlHelpers il est important de se rappeler que le compilateur C# voit class
réservés mot.
Donc, si vous utilisez le @ avant de l'attribut de classe, il contourne le problème, c'est à dire:
@Html.LabelFor(model => model.PhysicalPostcode, new { @class= "SmallInput" })
Le symbole @ fait de la "classe" d'un littéral qui est passé à travers.
Surcharge de LabelFor:
public static class NewLabelExtensions
{
public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, object htmlAttributes)
{
return LabelFor(html, expression, new RouteValueDictionary(htmlAttributes));
}
public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, IDictionary<string, object> htmlAttributes)
{
ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
string htmlFieldName = ExpressionHelper.GetExpressionText(expression);
string labelText = metadata.DisplayName ?? metadata.PropertyName ?? htmlFieldName.Split('.').Last();
if (String.IsNullOrEmpty(labelText))
{
return MvcHtmlString.Empty;
}
TagBuilder tag = new TagBuilder("label");
tag.MergeAttributes(htmlAttributes);
tag.Attributes.Add("for", html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(htmlFieldName));
tag.SetInnerText(labelText);
return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal));
}
}
D'accord, en regardant la source (System.Web.Mvc.Html.LabelExtensions.cs) pour cette méthode, il ne semble pas y avoir de moyen de faire cela avec un HtmlHelper dans ASP.NET MVC 2. Je pense que votre meilleur pari est de créer votre propre HtmlHelper ou de procéder comme suit pour cette étiquette spécifique:
<label for="Name" class="myLabel"><%= Model.Name %></label>
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.