我正在使用 Razor Views 开发一个 ASP.Net MVC 3 Web 应用程序。我有以下 ViewModel 传递给我的 Razor 视图并迭代以显示记录列表。
视图模型
public class ViewModelLocumEmpList
{
public IList<FormEmployment> LocumEmploymentList {get; set;}
}
看法
<table>
<tr>
<th>Employer</th>
<th>Date</th>
</tr>
@foreach (var item in Model.LocumEmploymentList) {
<tr>
<td>@item.employerName</td>
<td>@item.startDate</td>
</tr>
}
</table>
我的问题是这条线
@Html.DisplayFor(modelItem => item.startDate)
返回这样的日期20/06/2012 00:00:00,我希望它删除时间并仅显示日期,即20/06/2012。
我试过添加
@Html.DisplayFor(modelItem => item.startDate.Value.ToShortDateString())
和
DisplayFor(modelItem => item.startDate.HasValue ? item.startDate.Value.ToShortDateString(): "")
但是,它们都在运行时返回以下错误消息
Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
我在这里查看了 Darin Dimitrov 的回答Converting DateTime format using razor
但是,我无权访问 ViewModel 中的 startDate 属性,我的 ViewModel 返回您可以在上面看到的 FormEmployment 对象的 IList。
如果有人对如何从日期时间属性中删除时间有任何想法,那么我将不胜感激。
谢谢。
另外,我的 startDate 属性是 Nullable。
更新
根据 PinnyM 的回答,我添加了一个部分类(见下文)以将 [DisplayFormat] 属性放在 startDate 属性上。
public partial class FormEmployment
{
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
public Nullable<System.DateTime> startDate { get; set; }
}
但是,我的 Razor View 仍然使用以下代码显示20/06/2012 00:00:00
@Html.DisplayFor(modelItem => item.startDate)
有任何想法吗?
谢谢。