2016-03-21 4 views
0

Ich bin mit einem Problem mit Entity Framework konfrontiert und MVC ActionResult gibt Partial View zurück. Ich war sehr Beispielcode zum Abrufen von Daten aus der Datenbank zu Teilansicht Aktion erstellen, und stecken Sie Daten zur teilweisen Ansicht als normales Datenmodell. Aber wenn ich den gleichen Code verwenden, um Daten abzurufen, ist es nicht arbeiten und leeres Modell zurückgeben, und wenn ich es mit dem normalen ActionResult verwenden, ist die Rückkehr normal zu sehen, es ist Arbeit.Entity Framework gibt keinen Wert mit MVC-Aktion

Dies ist die Teilansicht Aktion:

public ActionResult PaperSpecification() 
{ 
    var _sheets = _entity.Sheets.ToList(); 

    return PartialView("_SheetSpecificationPartial", _sheets); 
} 

_entity Variable als private in Controller-Klasse definiert.

Die gleiche Idee, die ich

public ActionResult Index() 
{ 
    var _sheets = _entity.Sheets.ToList(); 

    return View(_sheets); 
} 

Dies ist Index Ansicht aber in Index Aktion verwendet:

@{ 
    ViewBag.Title = "Index"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
@model IEnumerable<PrintManager.Models.Db.Sheet> 
<h2>Index</h2> 

@{ 
    Html.RenderAction("PaperSpecification", "WorkOrder"); 
} 

<ul> 
    @foreach (var item in Model) 
    { 
     <li>@item.SheetName</li> 
    } 
</ul> 

Und schließlich ist diese Teilansicht:

<div class="panel panel-primary"> 
    <div class="panel-heading"> 
     <h3 class="panel-title">Paper Specification</h3> 
    </div> 
    <div class="panel-body"> 
     <div class="row"> 
      <div class="col-md-3"> 
       <div class="form-group"> 
        <label>Paper Specification</label> 
        <select class="form-control"> 
         @if (ViewBag.sheets_L != null) 
         { 
          foreach (var item in Model) 
          { 
           <option>@item.SheetName</option> 
          } 
         } 
        </select> 
       </div> 
      </div> 
      <div class="col-md-3"></div> 
      <div class="col-md-3"></div> 
      <div class="col-md-3"></div> 
     </div> 
    </div> 
</div> 

ich nachdenken ist kein Entity-Problem, aber es handelt sich um ein Problem mit der Teilansicht.

+1

Haben Sie einen Haltepunkt bei 'var _sheets = _entity.Sheets.ToList();' gesetzt und überprüft, ob er Daten enthält? –

+0

Sie benötigen keine PaperSpecification-Aktion. Versetzen Sie Ihre Teilansicht in die Indexansicht –

Antwort

0

Wie in den Kommentaren von Pavel vorgeschlagen ersetzen:

@{ 
    Html.RenderAction("PaperSpecification", "WorkOrder"); 
} 

Mit

@Html.Partial("_SheetSpecificationPartial") 

In diesem Fall Sie nicht explizit das Modell zu Ihrer Teilansicht übergeben müssen. Jetzt können Sie PaperSpecification Methode entfernen.