Список в MVC привязки объектов
Я просто хочу связать список объектов, отобразить его и отправить обратно, прежде чем добавлять функциональность для добавления и удаления во время выполнения. Моя проблема до сих пор заключается в том, что я не могу получить список по почте. Вот мой код:
Модели
[Serializable] public class Animal { public int ID { get; set; } public string Name { get; set; } } [Serializable] public class Animals { public string FarmName { get; set; } public List Farm { get; set; } }
Контроллер:
public class HomeController : Controller { public ActionResult Index() { var animals = new Animals(); animals.FarmName = "My Small Farm"; animals.Farm = new List(); animals.Farm.Add(new Animal() { ID = 1, Name = "Dog" }); animals.Farm.Add(new Animal() { ID = 2, Name = "Cat" }); return View(animals); } [HttpPost] public ActionResult Index(Animals farm) { return View(farm); } }
Смотреть:
@using MVCTest.Models @model MVCTest.Models.Animals @{ ViewBag.Title = "Home Page"; } @using (Html.BeginForm("Index", "Home")) { @Html.LabelFor(x => x.FarmName) @Html.TextBoxFor(x => x.FarmName) for (var i = 0; i < Model.Farm.Count; i++ ) { @Html.LabelFor(x => x.Farm[i].ID) @Html.TextBoxFor(x => x.Farm[i].ID) @Html.LabelFor(x => x.Farm[i].Name) @Html.TextBoxFor(x => x.Farm[i].Name) } <input type="submit" value="Submit" /> }
Что я уже пробовал:
Я попытался использовать циклы foreach и for в представлении, однако оба они не отправили обратно начальные записи. Кроме того, я попытался добавить скрытое поле в цикл for, назвал его index и установил значение переменной "i". Однако и у меня это не сработало.
Я также пробовал изменять список<животные> В модели животных к IEnumerable&ЛТ;животные> и в контроллер, я сделал новый метод POST "общественная ActionResult индекс(звери, животные, интерфейс IEnumerable&ЛТ;животное&ГТ; фермы)". Однако я все равно получил null для переменной "ферма".
Я также попытался изменить LabelFor(x => x.Farm[i].ID) в HiddenFor(x => x.Farm[i].ID) однако генерируемый HTML-код выглядит следующим образом: <input data-val="true" data-val-number="идентификатор поля должен быть числом". data-val-required="поле ID обязательно". id="Farm_0__ID" name="Farm[0].ID" type="hidden" value="1">
Я знаю, что, должно быть, что-то упускаю, однако, я в растерянности после попытки в течение целых 2 дней. Любая помощь и/или указания на то, что я делаю неправильно, были бы очень признательны.