我是MVC的新手,尝试了几件事情,所以如果有人能告诉我我哪里出错了,我将不胜感激。我把它从VB转换成它的工作,但现在,在C#中它不。也许我的转换不好,但类似的代码在VB中工作。部分视图无法访问模型
我通过模型指数(稍后将呈现几个谐音,我将建立一个ViewModel持有各种不同类型的模型)。然后,我尝试将模型传递给Partial,但Partial无法在foreach循环中访问Model。
下面是代码。任何帮助,将不胜感激。
控制器:
public ActionResult HospiceSummary(int? id)
{
IEnumerable<PatAdm> patadms = (from pa in db.PatAdms where pa.AdmNum == id select pa).ToList();
return View(patadms);
}
查看:
@model IEnumerable<PatAdm>
@{
ViewBag.Title = "View";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>.... Some other code up here</h2>
<h2>Hospice</h2>
<div class="container-fluid">
@Html.Partial("~/Views/Shared/_PatientAdmissionSearch.cshtml", Model)
</div>
部分:
@model IEnumerable<PatAdm>
<div class="row">
<div class="col-xs-12">
<div class="table-header">
Find a Patient
</div>
</div> @*col-xs-12*@
</div> @*row1*@
<div class="row">
@using (Html.BeginForm("Index", "Admission", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="col-md-4">
<div class="input-append">
<input type="text" class="span2 search-query" id="query" name="query">
<button type="submit" class="btn"><i class="icon-search"></i></button>
</div>
</div>
<table class="table">
<tr>
<th></th>
<th>Patient Name</th>
<th>Acct #</th>
<th>Admit Date</th>
<th>Discharge Date</th>
<th>DOB</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.ActionLink("Select", "HospiceSummary", "Hospice", new {id = item.AdmNum}, new { @class = "label label-info"}) <br />
</td>
<td>@Html.DisplayFor(modelItem => item.Patient.LName), @Html.DisplayFor(modelItem => item.Patient.FName)</td>
<td>@Html.DisplayFor(modelItem => item.AdmNum)</td>
<td>@Html.DisplayFor(modelItem => item.AdmDate)</td>
<td>@Html.DisplayFor(modelItem => item.DischDate)</td>
<td>@Html.DisplayFor(modelItem => item.Patient.DOB)</td>
</tr>
}
</table>
}
</div> @*row2*@
究竟是什么错误抛出? – mxmissile
我注意到的第一件事是在部分视图中,在intellisense中没有'模型'。然后,当我运行它,我得到:对象引用未设置到对象 –
的@ L_7337大多数实例或许这一点 - 'IEnumerable的 patadms =(从db.PatAdms PA其中pa.AdmNum == ID选择PA)。 ToList(); return View(patadms);'返回null。我不知道为什么,但你最好用调试器进行检查。 –
Leron