如何格式化MVC 5 Razor中的日期

Sni*_*itz 3 asp.net-mvc date razor asp.net-mvc-5

我的剃刀代码中有一个表,它循环遍历模型中的所有项目,并为每个项目创建一个表格行.我试图找出如何将日期格式化为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没有参数.

Sho*_*hoe 7

如果您使用的是c#6功能,则可以使用空条件.

@(item.ExpireDate?.ToString("MM/dd/yyyy"))


Sni*_*itz 4

我正在使用 PagedList NuGet 包,这使得 Html 帮助器调用有点不同。我可以通过在数据模型构造函数中指定日期格式然后使用显示助手来格式化日期。

在数据模型中:

[DisplayFormat(DataFormatString = "{0: MM/dd/yyyy}")] 
public Nullable<System.DateTime> ExpireDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

在剃须刀中:

<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>@Html.DisplayFor(modelItem => item.ExpireDate)<td>
            </tr>
            }
    </tbody>     </table>
Run Code Online (Sandbox Code Playgroud)