Razor页面中未正确显示日期



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

在我的sql server视图中,其中一列是日期字段。我很难在页面上没有时间部分的情况下显示它(如果时间部分不在DB上,但从阅读中看,它似乎是DateTime属性)。当我生成实体视图时,时间部分将被添加。

因此,基本上在我的模型上,我有以下内容(obv,这里只是嘲笑这些名称):

型号

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

控制器

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

因此,在这上面,我可以看到我想要的一切都恢复得很好,然后我将模型传递到我的视图中。

为了建立我的表,然后在视图中我正在做以下操作:

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(),但它抛出了异常

模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用。

使用ViewModel类将模型与视图分离实际上可以解决所有接口问题。我使用MVC的次数越多,就越意识到MVVmC是一种更好的方法。这就是一个很好的例子。创建一个ViewModel,使用MyDateTimeItem.ToString("MMMM dd, yyyy")为视图提供格式正确的日期值的字符串属性,而不是对模型本身进行强键入。

您可以在Views/Shared/DisplayTemplates中创建DateTime.cshtml,其中包含以下内容

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

相关内容

  • 没有找到相关文章

最新更新