2016-07-11 3 views
0

Ich habe folgendes Modell:Passing-Modell aus dem Blick zu der Steuerung Html.RenderAction ergibt Modell ist null

public class Foo 
{ 
    public List<Employee> Employees{ get; set; } 
    public List<Company> Companies{ get; set; } 
    public List<Admin> Admins{ get; set; } 
} 

Dann habe ich meine Controller-Aktionen:

public ActionResult Index() 
{ 
    Foo model = GetFooFromSomewhere(); 
    return PartialView("Index", model); 
} 

public ActionResult Employees(List<Employee> model) 
{ 
    return PartialView("Employees", model); 
} 

public ActionResult Companies(List<Company> model) 
{ 
    return PartialView("Companies", model); 
} 

public ActionResult Admins(List<Admin> model) 
{ 
    return PartialView("Admins", model); 
} 

Dann habe ich meine Ansichten

Index.cshml:

@model Foo 
@if(Model.Employees.Count > 0) 
{ 
    @{Html.RenderAction("Employees", "Config", Model.Employees);} 
} 
@if(Model.Companies.Count > 0) 
{ 
    @{Html.RenderAction("Companies", "Config", Model.Companies);} 
} 
@if(Model.Admins.Count > 0) 
{ 
    @{Html.RenderAction("Admins", "Config", Model.Admins);} 
} 

Employees.cshtml:

@model List<Employee> 

//Display model here 

Companies.cshtml

@model List<Company> 

//Display model here 

Admins.cshtml

@model List<Admin> 

//Display model here 

Wie Sie sehen können, verwende ich Index.cshtml ein Objekt zu erhalten, die mehrere enthält Listen. Dies liegt daran, dass ich die Aktionen ausblenden muss, wenn keine Elemente in der Liste gefunden werden. Wenn ich sie jedoch mit @ Html.RenderAction (...) erneut an den Controller übergebe, erhalte ich innerhalb der Controller-Aktion den Wert null, wenn ich eine Liste erwarte. Warum?

Antwort

2

Versuch auf diese Weise: Controller:

public ActionResult Admins(List<Admin> m) 
{ 
    return PartialView("Admins", m); 
} 

Ausblick:

@{Html.RenderAction("Admins", "Config", new { m = Model.Admins });} 
+0

Dank war das Problem – LeonidasFett

+0

Großartig! Froh dir zu helfen! – Luca

1

Sie müssen das initialisierte Modell an die Index Ansicht im Controller übergeben.

public ActionResult Index() 
{ 
    Foo model = GetFooFromSomewhere(); 
    return PartialView("Index", model); 
} 
+0

Es tut mir leid, dass ein Tippfehler war :) – LeonidasFett

Verwandte Themen