J'ai quelques problèmes avec le classeur modèle par défaut d'ASP.NET MVC. La vue contient HTML comme ceci:asp.net mvc problème de liaison de modèle par défaut
<input name="SubDTO[0].Id" value="1" type="checkbox">
<input name="SubDTO[1].Id" value="2" type="checkbox">
Ceci est mon simplifié 'modèle':
public class SubDTO
{
public virtual string Id { get; set; }
}
public class DTO
{
public List<SubDTO> SubDTOs { get; set; }
public DTO()
{
SubDTOs = new List< SubDTO>();
}
}
Tout cela fonctionne très bien si l'utilisateur sélectionne au moins la première case à cocher (SubDTO [0] .id) . Le contrôleur "reçoit" un DTO bien initialisé/lié. Toutefois, si la première case à cocher n'est pas sélectionnée mais uniquement, par exemple, SubDTO [1] .Id l'objet SubDTOs est null. Quelqu'un peut-il expliquer ce comportement «étrange» et comment le surmonter? Merci.
Meilleurs voeux,
Christian
PS:
Le contrôleur ressemble à ceci:
[Transaction]
[AcceptVerbs(HttpVerbs.Post)]
public RedirectToRouteResult Create(DTO DTO)
{
...
}
PPS:
Mon problème est que si je sélectionne la case SubDTO [0] .Id, SubDTO [1] .Id, SubDTO [2] .Id SubDTOs est initialisé. Mais si je sélectionne simplement la case à cocher SubDTO [1] .Id, SubDTO [2] .Id (PAS la première !!!) SubDTO reste null. J'ai inspecté les valeurs affichées (en utilisant firebug) et ils sont postés !!! Cela doit être un bogue dans le classeur par défaut ou peut-être manquer quelque chose.
Pouvez-vous également publier votre code d'action? – Lazarus
ok done - voir ps. merci – cs0815
Le classeur de modèle va essayer un nom de valeur de correspondance dans vos valeurs de retour aux noms de propriété dans votre objet. – Lazarus