2014-03-05 3 views
0

Я новичок в MVC и пробую несколько вещей, поэтому я был бы признателен, если кто-нибудь скажет мне, где я ошибаюсь. Я преобразовал это из VB, где он работал, но теперь, в C#, это не так. Возможно, мое преобразование плохое, но аналогичный код работает в VB.Partial View не может получить доступ к модели

Я передаю модель индексу (который позже будет отображать несколько партикулов, и я построю ViewModel для хранения каждого типа модели). Затем я пытаюсь передать модель частичным, но Partial не может получить доступ к модели в цикле foreach.

Ниже, если код. Любая помощь будет оценена по достоинству.

Контроллер:

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 = (from pa in db.PatAdms, где pa.AdmNum == id select pa). К списку(); return View (patadms); 'возвращает null. Я не знаю, почему, но лучше проверить с помощью отладчика. – Leron

ответ

2

Модель зрения Parent по умолчанию передается частичным виду, так что вы не необходимо передать явно. Также убедитесь, что модель на родительском представлении имеет значение.

+0

Спасибо @AshishCharan. Я нашел ответ из другого комментария, но ваш ответ был информативным, так что +1. –

+0

Каков был ответ? – mxmissile

+0

Модель возвращала значение null, и я исправил это в контроллере. –

Смежные вопросы