asp.net-mvc - 如何在 razor-engine 中的 ModelMetadata 对象上设置 DisplayFormatString 属性?
问题描述
我有一个 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
仅显示短日期的模板。但在这种情况下,我希望能够处理任何格式,而不仅仅是日期或时间。
解决方案
推荐阅读
- java - Java Stream:没有重复的HashMap对象列表
- amazon-web-services - 即使 AWS s3 中没有文件,AWS Athena 创建外部表也会成功?
- elasticsearch - 弹性搜索 - Kafka Connect 未将正确的键值发布为文档 ID
- javascript - 反应 - '.unshift()' 的奇怪行为,但状态数组上的 '.push()' 没有
- database - 如何在带有颤动的firestore中的卡片列表中显示我的结果
- sql - 从临时表转换数据
- python - Python 语法提供
- oracle - 如何使用 Oracle 触发器克隆用户
- decompiling - 什么是分析反编译器?
- c# - Serilog 未记录到文件 ASP.Net Core 3.2