J'ai un modèle principal et une vue partielle. Le modèle pour la vue partielle est un nouveau modèle sans valeurs. Mais maintenant je veux passer un élément du modèle parent à la vue partielle. Comment je vais y aller?Pour passer un élément du modèle parent à la vue partielle
Le parent et les vues partielles ont des propriétés différentes, donc je ne peux pas utiliser le même modèle.
Modèles:
public class Parent
{
.
.
public List<SelectListItem> TypeList { get; set; }
.
.
}
public class Partial1
{
public List<SelectListItem> TypeList1 { get; set; }
.
.
}
public class Partial2
{
public List<SelectListItem> TypeList2 { get; set; }
.
.
}
Parent Vue:
@model Models.Parent
@Html.Partial("_Partial1", new Partial1())
@Html.Partial("_Partial2", new Partial2())
je me rends compte que je peux passer à la vue partielle en utilisant un ViewDataDictionary
et de l'utiliser, mais je me demandais si je pouvais l'attribuer à mon modèle de vue partielle directement. Puis-je faire quelque chose comme ça?
@Html.Partial("_Partial1", new Partial1(new{TypeList1 =Model.TypeList}))
Le code ci-dessus donne une erreur de compilation dire Partial1 ne contient pas un constructeur qui prend 1 argument.
EDIT 1:
Selon la réponse de Chris Pratt J'ai modifié mon code pour
@Html.Partial("_Partial1", new Partial1{TypeList1 =Model.TypeList})
Cette résolu la compilation error.But cela provoque maintenant une erreur de temps d'exécution dans la vue partielle 1.
Partial1 Vue:
@model Models.Partial1
@Html.DropDownListFor(model => model.Type, Model.TypeList1, new { @class = "form-control" })
renvoie une erreur « Il n'y a pas Vi Elément ewData de type 'IEnumerable' avec la clé 'Type'. "
Pourquoi ne pas avoir 2 propriétés 'List' dans 'Partial1'? –
adiga
Oui, cela devrait fonctionner correctement. Quel est le problème réel ici? –
@ChrisPratt Je reçois une erreur de compilation disant Partial1 ne contient pas un constructeur qui prend 1 argument. – TheFallenOne