Asp net mvc 4 modèle de liaison avec la méthode post

im la recherche d'un moyen (s'il en est un) de faire le modèle de processus de liaison de travailler avec une Liste d'objets, la méthode post.
Je peux facilement afficher la liste. Mais quand il s'agit pour l'utilisateur de télécharger un "Bien" avec une méthode post je ne peux pas faire le cadre de lier chaque élément de la liste correctement. Vous pouvez voir la page de la partie où j'essaie de faire des étiquettes et les zones de texte est commenté, parce que je reçois des exceptions, donc je suppose que im faire de mal et je ne peux pas trouver un moyen de télécharger, un nombre variable de paramètres sur mon modèle.

C'est le Modèle:

 public class BienModel
    {

        [Required]
        [Display(Name = "Nombre del Bien.")]
        public String Nombre { set; get; }


        public List<Atributo> Atributos { set; get; }


    }

    public class Atributo
    {
        [Required]
        public String nombre { set; get; }

        [Required]
        public String valor { set; get; }
        public Atributo(){}
        public Atributo(String n, String v){
            this.nombre=n;
            this.valor=v;
        }


    }

Et c'est sur cette page:

@using (Html.BeginForm()) {


    <fieldset>
        <legend>Publicar bien form.</legend>
        <ol>
            <li>
                @Html.LabelFor(m => m.Nombre)
                @Html.TextBoxFor(m => m.Nombre)
                @Html.ValidationMessageFor(m => m.Nombre)
            </li>
            @*@for (int i = 0; i < Model.Atributos.Count;i++ )
            {

                @Html.Label(Model.Atributos[i].nombre)
                @Html.TextBoxFor(m => m.Atributos[i].valor)
                @Html.ValidationMessageFor(m => m.Atributos[i].valor)

            }*@

        </ol>
        <input type="submit" value="Publicar!" />
    </fieldset>

}

Et ce le contrôleur

public ActionResult PublicarBien()
    {

        //Pido a la logica los atributos

        BienModel b = new BienModel();

        b.Atributos = new List<Atributo>();
        b.Atributos.Add(new Atributo("Atributo1", ""));
        b.Atributos.Add(new Atributo("Atributo2", ""));
        b.Atributos.Add(new Atributo("Atributo3", ""));
        b.Atributos.Add(new Atributo("Atributo4", ""));


        return View(b);
    }

    [HttpPost]
    public ActionResult PublicarBien(BienModel b)
    {
        try
        {
            if (ModelState.IsValid)
            {
                //se da de alta el bien

                return RedirectToAction("Index", "Home");
            }
        }
        catch(Exception ex){
            ModelState.AddModelError("",ex.Message);
        }

        return View(b);
    }

OriginalL'auteur Cristiano Coelho | 2013-04-14