我有一个网页,显示通过实体框架和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())