Modèle de liaison avec imbriqué des modèles enfants et PartialViews dans ASP.NET MVC

J'ai les types et les classes:

namespace MVC.Models

public class Page 
{
   public EditableContent Content {get; set; }
}

public class EditableContent
{
    public TemplateSection SidebarLeft {get; set; }
    public TemplateSection SidebarRight {get; set; }
}

Je souhaite modifier le Page exemple, dans mon Edit.aspx Vue. Parce que EditableContent est également attaché à d'autres modèles, j'ai un PartialView appelé ContentEditor.ascx qui est fortement typé et prend une instance de EditableContent et le rend.

Le rendu de la partie tout fonctionne bien, mais quand je post tout à l'intérieur de mon ContentEditor n'est pas " lié " - ce qui signifie que Page.Content est null.

Sur le PartialView, j'utilise fortement typé Html Helpers pour ce faire:

<%= Html.HiddenFor(m => m.TemplateId) %>

Mais parce que les éléments d'entrée sur le formulaire qui sont rendus par ContentEditor.ascx ne pas obtenir le Content préfixe à son id attribut - valeurs ne sont pas liées à la Page.

J'ai essayé d'utiliser faiblement typé aides à surmonter cette:

<%= Html.Hidden("Content.TemplateId", Model.TemplateId) %>

Et quand je fais face à un bien qui est un List<T> de quelque chose, il devient très laid. J'ai ensuite rendu l'index de collection manuellement.

Dois-je mettre les deux Page et EditableContent en tant que paramètres à l'action du contrôleur?:

public ActionResult Edit(Page page, EditableContent content) { ... }

Ce qui me manque?

OriginalL'auteur MartinHN | 2010-03-17