2016-07-11 3 views
0

je modèle suivant:modèle Passing de vue de contrôleur en utilisant les résultats de Html.RenderAction dans le modèle étant nul

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

J'ai mes actions de contrôleur:

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); 
} 

J'ai mes vues

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 

Comme vous pouvez le voir, j'utiliser Index.cshtml pour obtenir un objet qui contient plusieurs listes. C'est parce que je dois cacher les actions si aucun élément n'est trouvé dans la liste. Cependant, quand je les passe à nouveau au contrôleur using @ Html.RenderAction (...), j'obtiens null dans l'action de contrôleur quand j'attends une liste. Pourquoi?

Répondre

2

Essayez de cette façon: Controller:

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

Vue:

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

merci c'était le problème – LeonidasFett

+0

Super! Content de vous aider! – Luca

1

Vous devez transmettre le modèle initialisé à la vue Index dans le contrôleur.

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

Je suis désolé était une faute de frappe :) – LeonidasFett