我有一个 Asp.Net MVC 5 项目。我正在尝试利用DisplayTemplates
使我的视图更加动态。
我正在尝试为任何DateTime
属性创建一个显示模板。ViewData.ModelMetadata.DisplayFormatString
但由于某种原因,我无法设置属性。
这是我的视图模型的样子
public class DisplayClientViewModel : IMapFrom
{
public int Id { get; set; }
public string Name { get; set; }
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime? EnrolledAt { get; set; }
}
这是我的DateTime.cshtml
看法
@model DateTime?
@if (!Model.HasValue && ViewData.ModelMetadata.NullDisplayText != null)
{
<span>@ViewData.ModelMetadata.NullDisplayText</span>
}
else if (Model.HasValue)
{
<span>@Model.Value.ToString(ViewData.ModelMetadata.DisplayFormatString ?? "g")</span>
}
由于我的EnrolledAt
财产装饰有[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
我期望ViewData.ModelMetadata.DisplayFormatString
设置为但由于某种原因{0:MM/dd/yyyy}
它总是设置为。null
如何ViewData.ModelMetadata.DisplayFormatString
从视图模型中设置 ModelMetadata 上的属性,或访问 on 上的值DisplayFormat.DataFormatString
?
注意:我知道我可以用它来装饰属性[DataType(DataType.Data)]
并创建一个Date.cshtml
仅显示短日期的模板。但在这种情况下,我希望能够处理任何格式,而不仅仅是日期或时间。