Comment passer du modèle à vue partielle

J'ai deux modèles de vue:

public class ParentViewModel
    {
        public Id { get; set; }
        .....
        public ChildViewModel Child{ get; set; }
    }

public class ChildViewModel
    {
        public ChildId { get; set; }
        .....
    }

Contrôleurs:

    public ActionResult Index()
        {
            .... <some code>
            return View("NewIndex", ParentViewModel);
        }

    [HttpPost]
    public ActionResult PartialAction(ChildViewModel childView)
    {
        return RedirectToAction("Index");
    }

Et points de vue:
L'indice de

@model ParentViewModel
....
@Html.Partial("_Partial", Model.Child)

et _Partial

@model ChildViewModel
... do some stuff with child model

Lorsque j'essaie d'ouvrir la page Index j'ai une erreur:

L'élément de modèle adopté dans le dictionnaire est de type 'ParentViewModel", mais ce dictionnaire nécessite un élément de modèle de type "ChildViewModel'.

Pourquoi il essaie de passer ParentViewModel au lieu de ChildViewModel. Ce que je fais mal?

  • Lors de l'appel est Model.Child null? Parce que le deuxième parater de la Html.Partial ne doit pas être null... Donc, assurez-vous que votre Child propriété a une certaine valeur!
  • en fait, ma vue Partielle n'est que pour AddObject fonctionnalité, donc ChildViewModel besoins uniquement pour l'envoi de données de contrôleur de PartialView. Donc, ne noot besoin de passer des données à l'Enfant à partir de l'Index à vue Partielle
  • Encore besoin de vous pour passer un ChildViewModel à la @Html.Partial appel. Toutefois, il peut être un objet vide : @Html.Partial("_Partial", new ChildViewModel ())...
  • Oh! Merci! Maintenant je comprendre 🙂
InformationsquelleAutor DarkNik | 2014-01-16