¿Hay alguna manera de utilizar LabelFor helper y personalizar el texto de la etiqueta sin tener que usar DisplayNameAttribute en mi modelo?Asp.Net MVC 2 LabelFor Custom Text
Respuesta
He creado este ayudantes HTML para mi proyecto:
public static class MyLabelExtensions
{
public static MvcHtmlString Label(this HtmlHelper htmlHelper, string forName, string labelText)
{
return Label(htmlHelper, forName, labelText, (object) null);
}
public static MvcHtmlString Label(this HtmlHelper htmlHelper, string forName, string labelText,
object htmlAttributes)
{
return Label(htmlHelper, forName, labelText, new RouteValueDictionary(htmlAttributes));
}
public static MvcHtmlString Label(this HtmlHelper htmlHelper, string forName, string labelText,
IDictionary<string, object> htmlAttributes)
{
var tagBuilder = new TagBuilder("label");
tagBuilder.MergeAttributes(htmlAttributes);
tagBuilder.MergeAttribute("for", forName.Replace(".", tagBuilder.IdAttributeDotReplacement), true);
tagBuilder.SetInnerText(labelText);
return MvcHtmlString.Create(tagBuilder.ToString(TagRenderMode.Normal));
}
public static MvcHtmlString LabelFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
string labelText)
{
return LabelFor(htmlHelper, expression, labelText, (object) null);
}
public static MvcHtmlString LabelFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
string labelText, object htmlAttributes)
{
return LabelFor(htmlHelper, expression, labelText, new RouteValueDictionary(htmlAttributes));
}
public static MvcHtmlString LabelFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
string labelText,
IDictionary<string, object> htmlAttributes)
{
string inputName = ExpressionHelper.GetExpressionText(expression);
return htmlHelper.Label(inputName, labelText, htmlAttributes);
}
}
los uso con "inflexible" recursos:
<%= Html.LabelFor(m=>m.NickName, UserStrings.NickName) %>
Esperamos que ayuda ...
¿Por qué no creas tu propio Html Helper?
public static class MVCHelpers
{
public static string CustomLabelFor(this HtmlHelper helper, string ...)
{
return "<label ... </label>"
}
}
Ese iba a ser mi último recurso, era asegurarme de que no me faltaba algo. Parece extraño que la única forma en que he encontrado personalizar el texto es usar DisplayNameAttribute. –
He encontrado esto extremadamente útil. Creo que esto es algo que falta en MVC 2. O al menos no he encontrado una manera de hacerlo integrado.
El caso más simple detalla la necesidad de esta función. Tengo dos objetos Contactos y Direcciones. Un contacto puede tener múltiples addesses
Dirección
- ID
- Calle
- Ciudad
- Estado
Contacto
- ID
- , dirección de bus Identificación
- ID Domicilio
Ahora para una forma que edita o muestra un contacto, pudiendo cambiar el DisplayNameAttribute en la dirección de la propiedad 'calle' no es muy útil, ya que realmente quiero un campo para ser 'Business Street' y otro para ser 'Home Street'.
Estoy de acuerdo. Creo que debería haber una manera de sobrescribir. –
-1: No es una respuesta – xr280xr
Hay una nueva sobrecarga LabelFor en MVC3 RC que le permite especificar la etiqueta Texto.
Sí, lo vi, ¡me alegro de que hayan agregado esto! –
- 1. ASP.NET MVC 2 - HTML.EditorFor() y Custom EditorTemplates
- 2. ASP.Net MVC, ViewPage <Dynamic> y EditorFor/LabelFor
- 3. Obtenga DisplayName Attribute sin utilizar LabelFor Helper en asp.net MVC
- 4. Custom MVC AuthorizeAttribute para ASP.NET Web API
- 5. ASP.NET MVC 3 Custom RouteBase y OutputCache
- 6. Aprender Asp.net MVC 2
- 7. Azure ACS 2 Custom Domain
- 8. Necesita ASP.Net/MVC Rich Text Editor
- 9. asp.net mvc mvc 2 a 4
- 10. RadioButtonFor en ASP.NET MVC 2
- 11. Solicitar validación - ASP.NET MVC 2
- 12. Android, Custom ListAdapter get TextView-Text
- 13. Necesita ayuda para crear Custom Html Helper para Asp.net MVC
- 14. MVC Custom Routes and ActionLinks
- 15. Asp.Net MVC 2 desplegable Viendo System.Web.MVC.SelectListItem
- 16. .NET MVC Custom Date Validator
- 17. Sublime Text 2 & PYTHONPATH
- 18. ¿Cómo configuro ASP.NET MVC 2 con MySQL?
- 19. ASP.NET MVC 2 - ¿Cómo uso DropDownListFor?
- 20. Descarga de archivos en Asp.Net MVC 2
- 21. Autenticación de 2 pasos en ASP.Net MVC
- 22. Html.LabelPara texto especificado [ASP.NET MVC 2]
- 23. ASP.NET MVC 2 parámetro de matriz
- 24. Actualizar a ASP.NET MVC versión 2
- 25. ASP.NET-MVC 2 RC Las mejores características
- 26. ActionLink fuertemente tipado en Asp.Net MVC 2?
- 27. ASP.NET MVC 2 problema con UpdateModel
- 28. xVal y ASP.Net MVC 2 AddModelStateErrors Problema
- 29. Múltiples entornos en ASP.Net MVC 2
- 30. ASP.NET-MVC 2 Anotaciones de datos StringLength
Acabo de encontrar este código y lo implementé en mi proyecto. Sin embargo, recibí un extraño mensaje de "accesibilidad inconsistente" para HtmlHelper al construir. Resolví esto reemplazando cada instancia de "este HtmlHelper" a "este System.Web.Mvc.HtmlHelper". Espero que ayude a cualquier otra persona que encuentre esto. –