Фон Нам необходимо отправить модель с товарами. Для этой цели, мы делаем эту сложную модель:ASP.Net MVC 6 PartialView моделирование путаницы
public class PaymentViewModel
{
public decimal? Payment { get; set; }
public string Description { get; set; }
public List<SplittedPaymentViewModel> SplittedPayment { get; set; } = new List<SplittedPaymentViewModel>();
}
public class SplittedPaymentViewModel
{
public short SplittedPaymentId { get; set; }
public decimal? Payment { get; set; }
public string Description { get; set; }
}
Для рендеринга HTML, мы эти два вида, один регулярный: CreatePayment
@model ZevApp.ViewModels.Record.PaymentViewModel
...
<input class="form-control" asp-for="Payment" type="number" />
<input class="form-control" asp-for="Description" />
...
<div class="panel-body" id="SplittedPayments">
@foreach (var spItem in Model.SplittedPayment)
{
@Html.Partial("SplittedPaymentPartial", spItem);
}
...
</div>
И другой Partial: SplittedPaymentPartial
@model ZevApp.ViewModels.Record.SplittedPaymentViewModel
...
<input class="form-control" asp-for="Payment" type="number" />
<input class="form-control" asp-for="Description" />
...
Как вы можете видеть, с первого взгляда мы называем частичный вид и передаем их по item form SplittedPayment список.
Неожиданно поведение Бежим код, но неожиданно поведение происходит: Каждый частичный вид связывания Оплата и Описание форма родительского PaymentViewModel, а не от прошедшего дня?
Кто-нибудь знает, что не так?
Каждый вид определяет модель в начале файла.
От контроллера мы возвращаемся PaymentViewModel, и для испытания, есть дерево SplittedPaymentViewModel s. Но мы не можем видеть значения из элементов.
Вот [тестовый проект] (https://drive.google.com/file/d/0B5bsSH-06GTYSU1kaDQxQS02NUU/view?usp=sharing) и использование шаги этапа: 1. Запустите проект, щелкните по ссылке «CreatePayment». Инициализированные данные хорошо связаны. 2. Нажмите кнопку «Отправить». 3. После рендеринга страницы вы можете видеть, что для каждого _SplittedPayment_, _Payment_ и _Description_ были связаны с _PaymentViewModel_ not form _SplittedPayment_. Если вы поставили точку останова в режиме отладки на _публичной IActionResult CreatePayment (модель PaymentViewModel) _, вы можете видеть, что модель в порядке - она содержит 2 элемента – Igor
Это странно! Почему бы не добавить новое поле в SplitedPaymentViewModel и связать его с входом в частичном представлении? (Или вы можете использовать Id для этой цели.) Таким образом, вы будете уверены, что входы вида привязаны к правильному экземпляру модели. –