处理视图中的逻辑和常量
本文关键字:逻辑和 常量 视图 处理 | 更新日期: 2023-09-27 18:13:48
我有一个日期显示在我的View
上,显示用户最后登录的日期。他们可能从来没有这样做过。因此它作为nullable DateTime
传递。
在UI上,我是这样显示的:
<td>@(u.LastVisit != null ? u.LastVisit.Value.ToString("dd-MMM-yyyy") : "Not yet")</td>
但我对此有一些问题,认为这可能是不好的做法。
首先,视图现在具有逻辑。(如果为null,则显示"Not Yet",否则显示日期)。视图还规定了日期格式。该格式已经作为常量存储在常量文件中,可以从我的控制器访问。而文本"Not Yet"也应该是一个常量。
我能看到的唯一方法是,向UI返回一个String,并将该逻辑移动到控制器。但这是正确的做法吗?
您可以将[DisplayFormat]
属性应用于该属性并设置DataFormatString
和NullDisplayText
属性,例如
[DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}", NullDisplayText = "Not yet")]
public DateTime? LastVisit { get; set; }
如果你已经为格式定义了一些常量,那么你可以使用(例如)DataFormatString = yourAssembly.Constants.DateFormat
,其中DateFormat
被定义为
public const string DateFormat = "{0:dd-MMM-yyyy}";
,在视图中使用DisplayFor()
@foreach(var u in Model)
{
@Html.DisplayFor(m => u.LastVisit)
}