在Razor页面中没有正确显示日期?

时间:2013-02-13 22:31:54

标签: c# asp.net-mvc-3 datetime

我有一个网页,显示通过实体框架和WCF服务从sql server视图中撤回的数据表。

在我的sql server视图中,其中一列是Date Field。我有一些困难让它显示没有我的页面上的时间部分(时间部分,如果没有在数据库,但从阅读它似乎是一个DateTime属性,当我生成我的实体视图时,时间部分将被添加。

所以基本上在我的模型上我有以下(obv这些名字只是在这里嘲笑):

模型

public List<MySqlView> MySqlView { get; set; }

控制器

model.MySqlView = MyWCFService.GetMeAlltheData(
                      //pass in some values start date, end date
                  );

所以在这一点上,我可以看到我想要的一切都很好,然后我将模型传递给我的视野。

要构建我的表,然后在View中我正在执行以下操作:

CSHTML

<tbody>
            @foreach (var item in Model.MySqlView)
            {
                <tr>
                    <td class="table-data">
                        @Html.DisplayFor(modelItem => item.Date)
                    </td>
                    //More stuff in table close loop

我尝试过item.Date.ToShortDateString()但是会​​抛出异常

  

模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式。

2 个答案:

答案 0 :(得分:0)

将ViewModel类与视图分开可以解决几乎所有的接口问题。我使用MVC越多,我就越认识到更好的方法是MVVmC。这是一个很好的例子。而不是强烈键入模型本身,创建一个ViewModel,使用MyDateTimeItem.ToString("MMMM dd, yyyy")向视图提供具有正确格式化日期值的字符串属性。

答案 1 :(得分:0)

您可以使用以下内容在Views / Shared / DisplayTemplates中创建DateTime.cshtml

@model DateTime

@Html.Label("", Model.ToShortDateString())