我有一个漂亮的基本/标准的MVC项目,我正在建设。在它一切正常(图1),直到我添加了一个DateTime对象,我的模型(图2),在该点查看该模型变得非常扭曲的,并不会显示任何信息(图3)。查看我的SQL数据库中有关相关日期时间对象的条目(图4)。DateTime破坏视图
我只是假设它是专门用于DateTime数据类型的东西,但我不确定是什么原因导致了这个问题,或者我可以尝试哪些解决方法。
图1:
图2:
图3:
图4:
从我的浏览守则问:
@model TKOPOC.Models.SubmitEIDs
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@* Model Update Alert *@
@if(Model.isVerify){ <h1><span style="color: red;">VERIFY YOUR CHANGES, THEN CLICK SUBMIT</span></h1> }
@*Search Box*@
@if(!Model.isVerify)
{
using (Html.BeginForm("Index", "EightID", FormMethod.Get))
{
<p>
Find by name or EID: @Html.TextBox("searchString", ViewBag.CurrentFilter as string)
<input type="submit" value="Search" />
</p>
}
<p>
@Html.ActionLink("Create New", "Create")
</p>
}
<table>
<tr>
<th>
@Html.ActionLink("EID", "Index", new { sortOrder=ViewBag.EIDSortParm, currentFilter=ViewBag.CurrentFilter })
</th>
<th>
@Html.ActionLink("Name", "Index", new { sortOrder=ViewBag.NameSortParm, currentFilter=ViewBag.CurrentFilter })
</th>
<th>
@Html.ActionLink("Email", "Index", new { sortOrder=ViewBag.EmailSortParm, currentFilter=ViewBag.CurrentFilter })
</th>
<th>
@Html.ActionLink("Physical", "Index", new { sortOrder=ViewBag.PhysicalSortParm, currentFilter=ViewBag.CurrentFilter })
</th>
<th>
@Html.ActionLink("Admin", "Index", new { sortOrder=ViewBag.AdminSortParm, currentFilter=ViewBag.CurrentFilter })
</th>
<th>
@Html.ActionLink(" Maint", "Index", new { sortOrder=ViewBag.MaintSortParm, currentFilter=ViewBag.CurrentFilter })
</th>
<th>
@Html.ActionLink(" Cab", "Index", new { sortOrder=ViewBag.CabSortParm, currentFilter=ViewBag.CurrentFilter })
</th>
<th>
@Html.ActionLink(" Mills", "Index", new { sortOrder=ViewBag.MillSortParam, currentFilter=ViewBag.CurrentFilter })
</th>
<th></th>
</tr>
@foreach (var item in Model.EightIDsPagedList) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.EID)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Email)
</td>
<td>
@Html.DisplayFor(modelItem => item.Physical)
</td>
<td>
@Html.DisplayFor(modelItem => item.Admin)
</td>
<td>
@Html.DisplayFor(modelItem => item.Maint)
</td>
<td>
@Html.DisplayFor(modelItem => item.Cab)
</td>
<td>
@if (item.Admin | item.Maint)
{
<text>All</text>
}
else
{
@Html.DisplayFor(modelItem => item.Mills.Count)
}
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.EightIDID }) |
@Html.ActionLink("Details", "Details", new { id=item.EightIDID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.EightIDID })
</td>
</tr>
}
</table>
<p> </p>
@* Paging *@
<div>
Page @(Model.EightIDsPagedList.PageCount < Model.EightIDsPagedList.PageNumber ? 0 : Model.EightIDsPagedList.PageNumber)
of @Model.EightIDsPagedList.PageCount
@if (Model.EightIDsPagedList.HasPreviousPage)
{
@Html.ActionLink("<<", "Index", new { page = 1, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter })
@Html.Raw(" ");
@Html.ActionLink("< Prev", "Index", new { page = Model.EightIDsPagedList.PageNumber - 1, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter })
}
else
{
@:<<
@Html.Raw(" ");
@:< Prev
}
@for (var x = 1; x < Model.EightIDsPagedList.PageCount; x++)
{
if (Model.EightIDsPagedList.PageNumber == x)
{
@x;
}
else
{
@Html.ActionLink(Convert.ToString(x), "Index", new { page = x, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter });
}
}
@if (Model.EightIDsPagedList.HasNextPage)
{
@Html.ActionLink("Next >", "Index", new { page = Model.EightIDsPagedList.PageNumber + 1, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter })
@Html.Raw(" ");
@Html.ActionLink(">>", "Index", new { page = Model.EightIDsPagedList.PageCount, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter })
}
else
{
@:Next >
@Html.Raw(" ")
@:>>
}
</div>
<p> </p>
<table border="0">
<tr>
@if (!Model.isVerify)
{
using (Html.BeginForm("Index", "EightID", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<td>
<input type="file" name="file" required />
<input type="submit" name="Verify" value="Verify" />
</td>
}
}
else
{
using (Html.BeginForm("Submit", "EightID", FormMethod.Post, new { NewEIDs = Model.EightIDs }))
{
<td>
<input type="submit" name="Submit Changes" value="Submit" />
</td>
}
using (Html.BeginForm("Cancel", "EightID", FormMethod.Post))
{
<td>
<input type="submit" name="Cancel" value="Cancel" />
</td>
}
}
</td>
</tr>
</table>
编辑:
通过观察一些调试后,我发现其中的问题时,只是没有为什么 - 在表头之后,我们回到DisplayFor发生的foreach()循环。这里,该程序符合foreach。然后Model.EightIDsPagedList。然后“进入”。但是它不会进入var或item,只是完全跳过循环。当我删除有问题的DateTime项目时,程序按照您预期的那样进入循环,并继续执行。
如果使用剃须刀,您应该包含您的视图代码,一个'.cshtml'文件。 – Igor
做哟你有一个DateTime的列?它看起来像是让它的项目为零,但没有列标题。 “{0:dd/MM/yyyy}” – jdweng
我并不完全熟悉格式化强制,但足以说这个问题发生在我添加该部分之前。我的印象是,0与格式化的方式有关,而不是与列分配听起来像什么有关。但是,如果你询问现有的列是否在数据库中,那么是的,有一列与第一行的条目 –