Już zacząłem pisać to już wyślę :) Da się zrobić inaczej to zależy czego potrzebujesz itd, itp. Ogólnie możesz też po dodaniu nowego wpisu do listy za pomocą JS dopisywać nowego inputa analogicznie do tego co powstało za pomocą hiddenFor. Kontroler to zinterpretuje jako kolejny element listy. Jednak ja przedstawiam pomysł z Session + ajax
View Model:
public class PersonViewModel
{
public string Imie { get; set; }
public int Wiek { get; set; }
}
public class Zwierzak
{
public string Rasa { get; set; }
public string Imie { get; set; }
}
Kontroler Home:
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
if (Session["Zwierzaczki"] == null)
{
Session["Zwierzaczki"] = new List<Zwierzak>();
}
var model = new PersonViewModel()
{
Imie = "Jan",
Wiek = 44
};
return View(model);
}
[HttpPost]
public ActionResult About(PersonViewModel model)
{
ViewBag.Message = "Your application description page.";
var tmp = Session["Zwierzaczki"] as List<Zwierzak>;
return View(model);
}
public void AddToSession(Zwierzak zwierzak)
{
var tmp = Session["Zwierzaczki"] as List<Zwierzak>;
tmp?.Add(zwierzak);
Session["Zwierzaczki"] = tmp;
}
Widok Home:
@using MVC_TEST.Models
@model MVC_TEST.Models.PersonViewModel
@{
var listaZwierzakow = Session["Zwierzaczki"] as List<Zwierzak>;
}
@using (Html.BeginForm("About", "Home", FormMethod.Post))
{
<div style="margin-top: 60px;">
<div class="row">
@Html.TextBoxFor(model => model.Imie)
@Html.TextBoxFor(model => model.Wiek)
</div>
<div class="row" style="margin-top: 20px;">
<div class="col-sm-3" id ="zwierzakiTabelka">
@foreach (var item in listaZwierzakow)
{
<div class="row ">
<div class="col-sm-6">
@item.Imie
</div>
<div class="col-sm-6">
@item.Rasa
</div>
</div>
}
</div>
<div class="col-sm-3">
<input type="text" placeholder="Imie Zwierzaka" id="imieZwierzaka" />
<input type="text" placeholder="Rasa Zwierzaka" id="rasaZwierzaka" />
<input type="button" value="Dodaj zwierzaka" onclick="dodajZwierzaka();" />
</div>
</div>
<div class="row" style="margin-top: 40px;">
<input type="submit" value="Dodaj cały model" />
</div>
</div>
}
<script type="text/javascript">
function dodajZwierzaka() {
var imiezwierza = $("#imieZwierzaka").val();
var rasazwierza = $("#rasaZwierzaka").val();
var json = '{"Rasa":"' + rasazwierza + '" ,"Imie":"'+ imiezwierza+'"}';
$.ajax({
url: "/Home/AddToSession",
type: "POST",
data: json,
dataType: 'json',
contentType: "application/json; charset=utf-8"
});
}
</script>