J'ai deux classes et la première contient une liste. La vue reçoit une liste en tant que modèle. Lorsque je poste la vue, je suis en mesure de récupérer dans le contrôleur chaque propriété simple. Mais la liste <> est toujours nulle pour les sous-modèles.Liste de liaison DotNet MVC des listes de confinement d'objets complexes
Les deux classes:
public class MyModel
{
public int ModelId {get;set;}
public string Description {get;set;}
public List<SubModel> SubModels {get;set;}
}
public class SubModel
{
public int MySubModelId {get;set;}
public string Description {get;set;}
}
Dans la page vue, le modèle reçu est
@model List<MyModel>
Après des recommandations sur Internet, je créé un éditeur de editorfor pour rendre ma classe dans la vue:
@model MyModel
<tr id="@Model.ModelId">
@Html.HiddenFor(m => m.ModelId)
@Html.HiddenFor(m => m.Description)
<td>@Model.Description</td>
</tr>
@for(int i = 0; i < Model.SubModels.Count; i++)
{
// How to render the class here to be able to be post in the controller?
// @Html.HiddenFor(m => m.SubModels[i]) will not work of course...
}
S'il vous plaît nous montrer votre contrôleur et tout autre code dans le pipeline de cette demande. –
Sans voir le contrôleur, c'est difficile à dire. Mais je crois que vous ne pouvez pas renvoyer des types complexes dans un contrôleur, car cela entraînera généralement une valeur nulle. Cela est dû au fait que la chaîne de requête peut être trop longue parmi d'autres raisons. –