2014-03-05 27 views
0

我是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*@ 
+1

究竟是什么错误抛出? – mxmissile

+0

我注意到的第一件事是在部分视图中,在intellisense中没有'模型'。然后,当我运行它,我得到:对象引用未设置到对象 –

+0

的@ L_7337大多数实例或许这一点 - 'IEnumerable的 patadms =(从db.PatAdms PA其中pa.AdmNum == ID选择PA)。 ToList(); return View(patadms);'返回null。我不知道为什么,但你最好用调试器进行检查。 – Leron

回答

2

父视图的模型是默认传递到局部视图,这样你就不会需要明确传递。还要确保父视图上的模型具有价值。

+0

谢谢@AshishCharan。我从另一个评论中找到答案,但你的回答是提供信息,所以+1。 –

+0

答案是什么? – mxmissile

+0

模型返回null,我在控制器中修复了这个问题。 –