Voici mon modèle :
public class Items
{
public string Foo { get; set; }
public string Bar { get; set; }
}
Contrôleur :
public ActionResult Index()
{
var model = new List<Items>
{
new Items
{
Foo = "foo",
Bar = "bar"
},
new Items
{
Foo = "ai",
Bar = "ia"
},
new Items
{
Foo = "one",
Bar = "two"
}
};
return View(model);
}
[HttpPost]
public ActionResult Index(List<Items> model)
{
return View(model);
}
Vue (Index) :
@using (Html.BeginForm())
{
for (int i = 0; i < Model.Count; i++)
{
<div onclick="$(this).remove();">
@Html.TextBoxFor(model => model[i].Foo) <br/>
@Html.TextBoxFor(model => model[i].Bar)
</div>
}
<div>
<input type="submit"/>
</div>
}
Je supprime la deuxième paire :
<div onclick="$(this).remove();">
<input name="[0].Foo" type="text" value="foo"> <br>
<input name="[0].Bar" type="text" value="bar">
</div>
<div onclick="$(this).remove();">
<input name="[2].Foo" type="text" value="one"> <br>
<input name="[2].Bar" type="text" value="two">
</div>
Lors de l'affichage, je n'obtiens que la première paire ("foo" et "bar"). C'est parce que la troisième paire a l'index "2". Je veux obtenir les deux paires (je n'utilise pas FormCollection, je veux qu'il se lie automatiquement). En réalité, j'ai beaucoup d'autres entrées sur le formulaire, donc je ne veux pas recharger et rattacher les index à chaque entrée. Je ne veux donc pas recharger et rattacher les index à chaque entrée. Pouvez-vous m'aider ?