处理视图中的逻辑和常量

本文关键字:逻辑和 常量 视图 处理 | 更新日期: 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]属性应用于该属性并设置DataFormatStringNullDisplayText属性,例如

[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)
}