本文介绍了获取显示名称属性,而不在asp.net MVC使用LabelFor助手的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
什么是检索模型中的项目的显示名称属性的最佳方式?我看到很多使用LabelFor帮手一切的人,但一个标签是不恰当的,如果我只是想列出的数据出来。有一个简单的方法刚刚得到的名称属性,如果我只是想打印出来的,说一个段落?
解决方案
< P>
<%= Html.En code(
ModelMetadata.FromLambdaEx pression< YourViewModel,串>(
X => x.SomeProperty,ViewData的).DisplayName
)%GT;
&所述p为H.;
显然,以避免意大利面条code总是写一个帮助一个好主意:
公共静态类HtmlExtensions
{
公共静态MvcHtmlString GetDisplayName<的TModel,TProperty>(
这与的HtmlHelper LT;的TModel>的HtmlHelper,
防爆pression<&Func键LT;的TModel,TProperty>>前pression
)
{
VAR元= ModelMetadata.FromLambdaEx pression<的TModel,TProperty>(例如pression,htmlHelper.ViewData);
字符串值= metaData.DisplayName? (metaData.PropertyName ??前pressionHelper.GetEx pressionText(如pression));
返回MvcHtmlString.Create(值);
}
}
和则:
< P>
<%:Html.GetDisplayName(X => x.SomeProperty)%GT;
&所述; / P>
What is the best way to retrieve the display name attribute for an item in your model? I see a lot of people using the LabelFor helper for everything, but a label isn't appropriate if I just want to list the data out. Is there an easy way just get the Name Attribute if I just want to print it out in, say a paragraph?
解决方案
<p>
<%= Html.Encode(
ModelMetadata.FromLambdaExpression<YourViewModel, string>(
x => x.SomeProperty, ViewData).DisplayName
) %>
<p>
Obviously in order to avoid the spaghetti code it is always a good idea to write a helper:
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);
}
}
And then:
<p>
<%: Html.GetDisplayName(x => x.SomeProperty) %>
</p>
这篇关于获取显示名称属性,而不在asp.net MVC使用LabelFor助手的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!