我收到了错误,但错误只显示了我页面的标题;当我尝试调试并逐步执行代码时,它会进入共享的layout.cshtml页面,但它会一直步进,并在页脚上失败(只有测试和图像的位置) )。我试过评论页脚及其元素,但这并没有奏效。我似乎无法使用chrome / firefox中的dev工具找到任何东西。
关于我哪里出错的任何提示?
此index.cshtml页面最初指向js文件,其中为数据定义了布局。我将布局留在那里,但当它转到索引时,它会将其重定向到列表。可能是索引中的js文件导致错误吗?我已尝试对其进行评论,但随后该页面一直是空白的。
index.cshtml如下所示:
@{
ViewBag.Title = "People";
}
@section Head {
@Html.ScriptFile("modules/people.js", false)
}
<div class="header"><span class="name">@ViewBag.Title</span></div>
<table class="data"></table>
people.js文件包含:
$(function () {
if ($("#ID").length) {
init();
} else {
initializeTable("disclosures/listing", undefined, [
{ "sTitle": "ID" },
{ "sTitle": "Name" },
{ "sTitle": "Job Title" },
{ "sTitle": "Interview Complete?" },
{ "sTitle": "Completed On" },
{ "sTitle": "Last Update" }
], [
{ "name": "Completed: ", "column": 3 }
]);
}
});
我的控制器中有一个对象数组(基本上是字符串):
List<PersonStatus> people = new List<PersonStatus>();
将项目添加到列表后,我将其传递给我的视图:
return View("Listing", people);
然后以列表形式显示列表视图中的数组:
@model List<PersonStatus>
@{
ViewBag.Title = "People";
}
@section Head {
@Html.ScriptFile("modules/people.js", false)
}
<div class="header"><span class="name">@ViewBag.Title</span></div>
<div class="overflow">
@if (people == null)
{
<table>
<tr>
<td>
<i><font color="#cc0000">Information not available.</font></i>
</td>
</tr>
</table>
}
@if (people != null)
{
<table class="data">
<thead>
<tr>
<th>IDNumber</th>
<th>Name</th>
<th>Job Title</th>
<th>Interview Complete?</th>
<th>Last Updated On</th>
</tr>
</thead>
<tbody>
@foreach (var p in Model)
{
var person = p;
<tr>
<td>
<th>@people.IDNumber</th>
<th>@people.Name</th>
<th>@people.JTitle</th>
<th>@people.InterviewComplete</th>
<th>@people.LastUpdateDate</th>
</td>
</tr>
}
</tbody>
</table>
}
答案 0 :(得分:2)
如果我理解正确,您可能需要使用foreach循环。像:
@if (people != null)
{
<table class="data">
<thead>
<tr>
<th>IDNumber</th>
<th>Name</th>
<th>Job Title</th>
<th>Interview Complete?</th>
<th>Last Updated On</th>
</tr>
</thead>
<tbody>
foreach (var item in people)
{
<tr>
<td>
<th>@item.IDNumber</th>
<th>@item.Name</th>
<th>@item.JTitle</th>
<th>@item.InterviewComplete</th>
<th>@item.LastUpdateDate</th>
</td>
</tr>
}
</tbody>
</table>
}
答案 1 :(得分:0)
您需要使用foreach循环遍历集合,并在每次迭代时创建一个新的表行。查看Foreach loop for tables in MVC4
答案 2 :(得分:0)
好的,我认为你对System.NullReferenceException感到困惑。 对于你喜欢的View Model,
@model List<string>
并且在您的控制器中,您的代码是
List<PersonStatus> people = new List<PersonStatus>();
return View(people);
问题是您将List<PersonStatus>
传递给View,但您将View Model定义为List<String>
你应该这样做
@model List<PersonStatus>
请尝试以下代码:
@model List<PersonStatus>
@{
ViewBag.Title = "People";
}
@section Head {
@Html.ScriptFile("modules/people.js", false)
}
<div class="header"><span class="name">@ViewBag.Title</span></div>
<div class="overflow">
@if (Model== null)
{
<table>
<tr>
<td>
<i><font color="#cc0000">Information not available.</font></i>
</td>
</tr>
</table>
}
@if (Model!= null)
{
<table class="data">
<thead>
<tr>
<th>IDNumber</th>
<th>Name</th>
<th>Job Title</th>
<th>Interview Complete?</th>
<th>Last Updated On</th>
</tr>
</thead>
<tbody>
@foreach (var p in Model)
{
<tr>
<td>
<th>@p.IDNumber</th>
<th>@p.Name</th>
<th>@p.JTitle</th>
<th>@p.InterviewComplete</th>
<th>@p.LastUpdateDate</th>
</td>
</tr>
}
</tbody>
</table>
}