Я разрабатываю веб-приложение MVC с сетевым ядром 2.2.
У меня есть следующие классы:
public class A
{
public IList<B> Bs { get; set; }
}
public class B
{
public string Id { get; set; }
public string Name { get; set; }
}
Следующий вид:
@model A
@for (int i = 0; i < Model.Bs.Count; i++)
{
<partial name="_BsPatialView" for="Bs[i]" />
}
И следующий частичный вид (_BsPatialView.cshtml):
<input type='hidden' asp-for="@Model.Id" />
<input asp-for="@Model.Name" />
До сих пор все было сгенерировано нормально. Пример созданных входных данных в частичном представлении:
<input type="hidden" id="Bs_3__Id" name="Bs[3].Id" />
<input type="text" id="Bs_3__Name" name="Bs[3].Name" />
С именем и идентификаторами элементов связыватель модели в контроллере может правильно связать все.
Проблема в том, что когда я пытаюсь вернуть частичное представление с контроллера. Что я делаю:
public IActionResult AddBElement(A a)
{
a.Bs.Add(new B() { Id = Guid.NewGuid() });
return PartialView("_BsPatialView", a.Bs.Last());
}
Полученный HTML-код:
<input type="hidden" id="Id" name="Id" />
<input type="text" id="Name" name="Name" />
Итак, когда я отправляю форму, в которой есть эти входные данные, привязка модели не выполняется.
Итак, как мне вернуть частичный вид из контроллера, чтобы это исправить? Есть ли эквивалент вспомогательного атрибута тега for
партиала для использования в контроллере?