名称属性正常,但ShortName不起作用。
[Display(Name = "Date of the transfer the task", ShortName = "Trans date")]
public DateTime TransferDate { get; set; }
即使我删除了Name属性,也会忽略ShortName(" TransferDate"显示在列标题中)。
在视图中我这样做:
@Html.DisplayNameFor(model => model.TransferDate)
答案 0 :(得分:5)
如果您查看ShortName
property上Display
Attribute的说明,您会发现其开箱即用的范围非常有限:
当然,这并不限制您在模型元数据上利用该值,但是没有任何本地帮助程序可以这样做。
Starting with MVC 2,ModelMetadata
提供了两种访问基础数据的方法:FromStringExpression
和FromLambdaExpression
,因此您不需要以书面形式从头开始你自己的帮手或扩展方法。
如果您讨厌编写HTML帮助程序方法,则可以内联执行此操作:
@ModelMetadata.FromLambdaExpression<RegisterModel, string>(
model => model.TransferDate, ViewData).ShortDisplayName} )
但是,为了访问的一致性,代码的重复数据删除和改进的错误处理,添加扩展方法也是完全有效的
public static class MvcHtmlHelpers
{
public static MvcHtmlString ShortNameFor<TModel, TValue>(this HtmlHelper<TModel> self,
Expression<Func<TModel, TValue>> expression)
{
var metadata = ModelMetadata.FromLambdaExpression(expression, self.ViewData);
var name = metadata.ShortDisplayName ?? metadata.DisplayName ?? metadata.PropertyName;
return MvcHtmlString.Create(string.Format(@"<span>{0}</span>", name));
}
}
然后像任何其他帮助方法一样使用:
@Html.ShortNameFor(model => model.TransferDate)
进一步阅读: