我正在使用Razor Views开发ASP.Net MVC 3 Web应用程序.我有以下ViewModel,它传递给我的Razor View并迭代以显示记录列表.
视图模型
public class ViewModelLocumEmpList
{
public IList<FormEmployment> LocumEmploymentList {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
视图
<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>
Run Code Online (Sandbox Code Playgroud)
我的问题是这条线
@Html.DisplayFor(modelItem => item.startDate)
Run Code Online (Sandbox Code Playgroud)
返回这样的日期20/06/2012 00:00:00,我希望它删除时间,只显示日期,即20/06/2012.
我试过添加
@Html.DisplayFor(modelItem => item.startDate.Value.ToShortDateString())
Run Code Online (Sandbox Code Playgroud)
和
DisplayFor(modelItem => item.startDate.HasValue ? item.startDate.Value.ToShortDateString(): "")
Run Code Online (Sandbox Code Playgroud)
但是,它们都在运行时返回以下错误消息
Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
Run Code Online (Sandbox Code Playgroud)
我在这里看了Darin Dimitrov的回答使用razor转换DateTime格式
但是,我无法访问ViewModel中的startDate属性,我的ViewModel返回一个Formistmployment对象的IList,您可以在上面看到它.
如果有人对如何从日期时间属性中删除时间有任何想法,那么我将非常感激. …
从我的控制器我已经通过值模块来查看
public ActionResult Details(long id, string owner)
{
var module = _ownedModuleRepository.GetModuleDetails(id, owner);
return View(module);
}
Run Code Online (Sandbox Code Playgroud)
我已经在视图中显示了它包含的值如下
<dt>ID</dt>
<dd>@Model.Id</dd>
<dt>Module ID</dt>
<dd>@Model.ModuleId</dd>
<dt>Owner</dt>
<dd>@Model.Owner</dd>
<dt>Module Type</dt>
<dd>@Model.TypeName</dd>
<dt>Module Kind</dt>
<dd>@Model.KindName</dd>
<dt>Ownership Start Date</dt>
<dd>@Model.Start</dd>
<dt>Ownership End Date</dt>
<dd>@Model.End</dd>
@foreach (var properties in Model.Properties)
{
<dt>Property Name</dt>
<dd>@properties.Name</dd>
<dt>Property Value</dt>
<dd>@properties.Value</dd>
}
Run Code Online (Sandbox Code Playgroud)
目前@ Model.End为null,它是DateTime类型,我在viewmodel中将其设置为可为空.因为它是null,所以我正在看到它

如您所见,所有权结束日期的值是从下面获取属性名称的值.如果@ Model.End为null,如何将其设置为空?
编辑1:
我的模特
public class OwnedModuleDetails
{
public long Id { get; set; }
public string ModuleId { get; set; …Run Code Online (Sandbox Code Playgroud) 我的剃刀代码中有一个表,它循环遍历模型中的所有项目,并为每个项目创建一个表格行.我试图找出如何将日期格式化为MM/dd/yyyy而不是默认的"MM/dd/yyyy HH:mm:ss"格式.
<table class="table-condensed">
<thead>
<tr>
<th>Company</th>
<th>Contract No</th>
<th>Description</th>
<th>Expires</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@Html.ActionLink(@item.CompanyName, "ViewContract", new { contractID = @item.ID }) </td>
<td width="200">@item.ContractNumber</td>
<td>@item.Description</td>
<td>@item.ExpireDate</td>
</tr>
}
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了@ item.ExpireDate.ToString("MM/dd/yyyy")但是它会抛出一个错误,说明.ToString没有参数.
我试图更改datetime表中可空字段的格式,以便以格式显示ddd dd mmm yyyy.我尝试过使用DateTime.ToString("ddd dd mmm yyyy),DateTime.Value.ToString("ddd dd mmm yyyy")但是都没有用过.
<td>
@Html.DisplayFor(modelItem => item.DailyReportDate)
</td>
Run Code Online (Sandbox Code Playgroud)
任何意见,将不胜感激.