Мой вопрос сегодня в том, как я рассматриваю сложные динамические вложенные частичные представления в приложениях MVC 5. Идея заключается в том, что клиент может добавить x количество магазинов и x количество налогов на магазин за платеж.Проблемы с привязкой моделей с использованием динамического вложенного частичного представления
Лучший способ описать мою ситуацию это со структурой моих моделей:
public class PaymentViewModel
{
public HomeViewModel
{
NewStores = new List<StoreViewModel>();
}
public IList<StoreViewModel> NewStores { get; set; }
}
public class StoreViewModel
{
public StoreViewModel
{
NewStoreTax = new List<StoreTaxViewModel>();
}
public IList<StoreTaxViewModel> NewStoreTaxes { get; set; }
}
public class StoreTaxViewModel
{
public int TaxId { get; set; };
public string TaxName { get; set; };
public decimal TaxRate { get; set; };
}
Вид Index.cshtml содержит следующую форму: шаблон
@model PaymentViewModel
@using (Html.BeginForm())
{
<div id="newStores">
@for (int i = 0; i < @Model.NewStores.Count(); i++)
{
@Html.EditorFor(model => @Model.NewStores[i])
}
<div />
<input type="button" id="addstore" name="addstore" value="Add Store" />
<input type="submit" id="submit" name="submit" value="Save" />
}
редактор для Store.cshtml :
@model StoreViewModel
@using (Html.BeginCollectionItem("NewStores"))
{
<div id="newStoreTax">
@for (int i = 0; i < @Model.NewStoreTaxes.Count; i++)
{
@Html.EditorFor(model => @Model.NewStoreTaxes[i])
}
</div>
<input type="button" id="addstoretax" name="addstoretax" value="Add Store Tax" />
}
Наконец шаблон редактор для StoreTax.cshtml:
Всякий раз, когда я отправляю на контроллер и проверяю модель, список объектов Store заполняется, но списки объектов StoreTaxes внутри объекта Store отсутствуют.
У меня есть следующие действия POST в моем контроллере:
[HttpPost]
public ActionResult Index(PaymentViewModel paymentViewModel)
{
}
public ActionResult CreateNewStore()
{
var storeViewModel = new StoreViewModel();
return PartialView("~/Views/Shared/EditorTemplates/StoreViewModel.cshtml", storeViewModel);
}
public ActionResult CreateNewStoreTax()
{
var storeTaxViewModel = new StoreTaxViewModel();
return PartialView("~/Views/Shared/EditorTemplates/StoreTaxViewModel.cshtml", storeTaxViewModel);
}
Как я могу структурировать мое приложение, чтобы иметь дело с такими сложными гнездовыми динамическими шаблонами?
Заранее благодарен!
Вам удалось решить эту проблему? В настоящее время я сталкиваюсь с аналогичной проблемой. – prismeyez83