我正在构建一个如下所示的自定义HTML.LabelFor助手:
public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> self, Expression<Func<TModel, TValue>> expression, Boolean showToolTip)
{
var metadata = ModelMetadata.FromLambdaExpression(expression, self.ViewData);
...
}
Run Code Online (Sandbox Code Playgroud)
为了能够获得属性的正确名称,我使用以下代码:
metadata.DisplayName
Run Code Online (Sandbox Code Playgroud)
在ModelView类的属性上我得到了:
[DisplayName("Titel")]
Run Code Online (Sandbox Code Playgroud)
问题是我还需要一个描述.有一个名为Display的属性,它有名称和描述,但我没有看到如何使用上面代码中的元数据变量来提取它?
我正在尝试在表格中显示对象列表.我可以遍历每个单独的项目以找到它的值(使用for循环或DisplayTemplate),但是我如何非常地选择一个来显示整个组的标题.
这是一个简化的例子:
型号:
public class ClientViewModel
{
public int Id { get; set; }
public List<ClientDetail> Details { get; set; }
}
public class ClientDetail
{
[Display(Name="Client Number")]
public int ClientNumber { get; set; }
[Display(Name = "Client Forname")]
public string Forname { get; set; }
[Display(Name = "Client Surname")]
public string Surname { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
视图
@model MyApp.ViewModel.ClientViewModel
@{ var dummyDetail = Model.Details.FirstOrDefault(); }
<table>
<thead>
<tr>
<th>@Html.DisplayNameFor(model => dummyDetail.ClientNumber)</th>
<th>@Html.DisplayNameFor(model => dummyDetail.Forname)</th>
<th>@Html.DisplayNameFor(model …Run Code Online (Sandbox Code Playgroud) Name属性正常工作,但ShortName不起作用.
[Display(Name = "Date of the transfer the task", ShortName = "Trans date")]
public DateTime TransferDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
即使我删除了Name属性,也会忽略ShortName(列标题中会显示"TransferDate").
在视图中我这样做:
@Html.DisplayNameFor(model => model.TransferDate)
Run Code Online (Sandbox Code Playgroud) 我有一个模型和一个领域......等等这是微不足道的.但是,我需要从我的视图中获取字段中的"描述"属性和您的"名称"属性.使用@Html ...可以使用"DisplayNameFor"返回,显而易见.但是,如何获得"描述"属性?没有像@ Html.DisplayDescription这样的助手?有可能得到这个吗?
[Column("abc")]
[Display(Description = "The Description", GroupName = "The Group", Name = "The Name")]
public string field { get; set; }
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.对不起英语不好.;)