¿Cuál es la mejor manera de recuperar el atributo de nombre para mostrar de un artículo en su modelo? Veo a mucha gente usando LabelFor para todo, pero una etiqueta no es apropiada si solo quiero enumerar los datos. ¿Hay una manera fácil de obtener el atributo de nombre si solo quiero imprimirlo, por ejemplo, un párrafo?Obtenga DisplayName Attribute sin utilizar LabelFor Helper en asp.net MVC
Respuesta
<p>
<%= Html.Encode(
ModelMetadata.FromLambdaExpression<YourViewModel, string>(
x => x.SomeProperty, ViewData).DisplayName
) %>
<p>
Obviamente con el fin de evitar que el código espagueti es siempre una buena idea para escribir un ayudante:
public static class HtmlExtensions
{
public static MvcHtmlString GetDisplayName<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression
)
{
var metaData = ModelMetadata.FromLambdaExpression<TModel, TProperty>(expression, htmlHelper.ViewData);
string value = metaData.DisplayName ?? (metaData.PropertyName ?? ExpressionHelper.GetExpressionText(expression));
return MvcHtmlString.Create(value);
}
}
Y luego:
<p>
<%: Html.GetDisplayName(x => x.SomeProperty) %>
</p>
En mi opinión se debe utilizar una cadena como un tipo de resultado porque de lo contrario omite el mecanismo de codificación. Otro punto es que necesita DisplayName en algunos casos como una cadena (es decir, rellenar las columnas en una clase de WebGrid).
Debe intentar nueva función existente:
<% Html.DisplayNameFor(m => m.YourProperty) %>
Razor: @ Html.DisplayNameFor (model => model.SomeProperty) –
Much más simple que la respuesta aceptada. – VDWWD
- 1. Asp.Net MVC 2 LabelFor Custom Text
- 2. Obtenga valor de ASP.NET MVC Lambda Expression
- 3. Asp.Net MVC Html Helper Extension
- 4. Script & CSS Registration Helper en ASP.NET MVC?
- 5. preguntándose por qué el atributo DisplayName se ignora en LabelFor en una propiedad anulada
- 6. ASP.Net MVC, ViewPage <Dynamic> y EditorFor/LabelFor
- 7. ASP.NET MVC - llamando a Razor @helper desde otro @helper
- 8. ¿Es posible utilizar anotaciones de datos para LabelFor, ValidationMessageFor, EditorFor con recursos fuertemente tipados?
- 9. ASP.NET MVC Authorize Attribute para iniciar un modal?
- 10. ¿Por qué usamos HTML helper en ASP.NET MVC?
- 11. Spring MVC Session Attribute Access
- 12. Necesita ayuda para crear Custom Html Helper para Asp.net MVC
- 13. MVC Authorize Attribute + HttpUnauthorizedResult + FormsAuthentication
- 14. MVC SessionStateAttribute no funciona como Global Attribute
- 15. ¿Es posible crear un ASP.NET MVC personalizado fuertemente HTML Helper?
- 16. ASP.NET: Obtenga * real * URL sin procesar
- 17. ASP.NET MVC: Adición de ErrorMessage personalizado que incorpora DisplayName a Custom ValidationAttribute
- 18. cuándo utilizar knockout javascript con ASP.NET MVC
- 19. Usando ASP.NET MVC sin ORM
- 20. Html.ActionLink no se puede utilizar en Global Razor helper
- 21. asp.net mvc htmlattribute sin valor
- 22. ¿ASP.NET MVC es sin estado?
- 23. ASP.Net MVC 2 - Necesita agregar una propiedad predeterminada a un Html.Textbox Helper fuertemente tipado En Asp.Net MVC 2
- 24. Acceso DisplayName en xaml
- 25. ¿Cómo se usa WebAPI sin ASP.NET MVC?
- 26. Subdominios dinámicos en asp.net mvc
- 27. "Sin sobrecarga para el método 'LabelFor' toma 2 argumentos" en MVC3
- 28. cómo poner DisplayName en formato ErrorMessage
- 29. crear un helper html para mvc
- 30. ¿Cómo utilizar un System.Guid como clave principal en ASP.Net MVC?
Gracias, eso es exactamente lo que busco y más! –
Tenga en cuenta que necesita los siguientes 'using's para esto: using System.Linq; utilizando System.Linq.Expressions; –
¿Cuáles son las implicaciones de rendimiento de hacer esto? Me gusta la idea de usar esto en todas las vistas, pero suena mucho más complejo que solo tener el texto en .cshtml – Farinha