我有一个网页,显示通过实体框架和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()
但是会抛出异常
模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式。
答案 0 :(得分:0)
将ViewModel类与视图分开可以解决几乎所有的接口问题。我使用MVC越多,我就越认识到更好的方法是MVVmC。这是一个很好的例子。而不是强烈键入模型本身,创建一个ViewModel,使用MyDateTimeItem.ToString("MMMM dd, yyyy")
向视图提供具有正确格式化日期值的字符串属性。
答案 1 :(得分:0)
您可以使用以下内容在Views / Shared / DisplayTemplates中创建DateTime.cshtml
@model DateTime
@Html.Label("", Model.ToShortDateString())