Qual è il modo migliore per recuperare l'attributo del nome visualizzato per un articolo nel modello? Vedo un sacco di persone che usano l'helper LabelFor per tutto, ma un'etichetta non è appropriata se voglio solo elencare i dati. C'è un modo semplice per ottenere l'attributo Nome se voglio solo stamparlo, ad esempio un paragrafo?Ottieni attributo DisplayName senza utilizzare LabelFor Helper in asp.net MVC
risposta
<p>
<%= Html.Encode(
ModelMetadata.FromLambdaExpression<YourViewModel, string>(
x => x.SomeProperty, ViewData).DisplayName
) %>
<p>
Ovviamente al fine di evitare il codice di spaghetti è sempre una buona idea di scrivere un aiutante:
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);
}
}
E poi:
<p>
<%: Html.GetDisplayName(x => x.SomeProperty) %>
</p>
A mio parere si dovrebbe usare una stringa come un tipo di risultato perché altrimenti si salta il meccanismo di codifica. Un altro punto è che in alcuni casi è necessario il DisplayName come stringa (ad esempio, inserire le colonne in una classe WebGrid).
Si dovrebbe provare la nuova funzione esistente:
<% Html.DisplayNameFor(m => m.YourProperty) %>
Rasoio: @ Html.DisplayNameFor (model => model.SomeProperty) –
Much più semplice della risposta accettata. – VDWWD
- 1. Ottieni valore da ASP.NET MVC Lambda Expression
- 2. Si chiede perché l'attributo DisplayName viene ignorato in LabelFor su una proprietà sostituita
- 3. Seleziona Tag Helper in ASP.NET Core MVC
- 4. Sintassi ASP.NET MVC @helper vs Html Helper Metodi di estensione
- 5. ASP.Net MVC, ViewPage <Dynamic> e EditorFor/LabelFor
- 6. Sostituzione per @helper in ASP.NET 5/asp.net mvc 6
- 7. Come utilizzare WebAPI senza ASP.NET MVC?
- 8. Html.Labelfor utilizzare DisplayName dell'oggetto non proprietà
- 9. ASP.NET MVC: implementazione convalida lato client con attributo senza IClientValidatable
- 10. Come utilizzare gli helper ASP.NET MVC Html da un helper personalizzato?
- 11. Attributo filtro azione minima in ASP.NET MVC
- 12. È possibile utilizzare annotazioni di dati per LabelFor, ValidationMessageFor, EditorFor con risorse fortemente tipizzate?
- 13. Ottieni valori di intestazione in ASP.NET MVC
- 14. MVC ASP.NET MVC3 Attributo AllowHtml non funziona?
- 15. Dove posizionare gli helper dichiarativi HTML in ASP.NET MVC 3
- 16. ASP.Net MVC 3: attributo di autorizzazione inversa
- 17. ASP.NET MVC: aggiunta di ErrorMessage personalizzato che incorpora DisplayName in ValidationAttribute personalizzato
- 18. .NET - È possibile utilizzare ASP.NET senza MVC utilizzando HTML 5?
- 19. Ottieni il nome host senza utilizzare HttpRequest
- 20. LabelFor() in un foreach
- 21. DataAnnotations StringLength Attributo MVC - senza valore massimo
- 22. Ottieni attributo DisplayAttribute da PropertyInfo
- 23. Come utilizzare SOAP in asp.net mvc
- 24. Come utilizzare Console.WriteLine in ASP.Net MVC 3
- 25. ASP.NET MVC Utilizzo del rendering parziale da un helper HTML
- 26. Avere rasoio @helper nella cartella App_code usando ASP.NET MVC 3
- 27. Gli helper di ASP.NET MVC HTML sono sopravvalutati?
- 28. Come utilizzare la precompilazione della vista ASP.NET MVC con gli helper App_Code?
- 29. QueryString con ASP.NET MVC 6 Anchor Tag Helper
- 30. Come aggiungere attributo HTML id in ASP.NET MVC w/VB.NET
Grazie, Questo è esattamente quello che sto cercando e molto di più! –
Si noti che è necessario il seguente 'using's per questo: using System.Linq; utilizzando System.Linq.Expressions; –
Quali sono le implicazioni sulle prestazioni di questo? Mi piace l'idea di usarlo in tutte le viste, ma sembra molto più complesso del semplice testo in .cshtml – Farinha