【发布时间】:2012-06-20 14:48:50
【问题描述】:
我正在使用 Razor 视图开发一个 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 返回一个 IList 的 FormEmployment 对象,您可以在上面看到。
如果有人对如何从日期时间属性中删除时间有任何想法,那么我将不胜感激。
谢谢。
另外,我的 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)
有什么想法吗?
谢谢。
【问题讨论】:
标签: asp.net-mvc-3 datetime razor