Если вы укажете модель родительского вида, которая имеет дочерние модели частичного просмотра, например:
public class ParentViewModel
{
public ParentViewModel()
{
PartialViewModel1 = new PartialViewModel1();
PartialViewModel2 = new PartialViewModel2();
PartialViewModel3 = new PartialViewModel3();
}
public string PartialViewType { get; set; } /* Value to determine which view to show */
public PartialViewModel1 PartialViewModel1 { get; set; }
public PartialViewModel2 PartialViewModel2 { get; set; }
public PartialViewModel3 PartialViewModel3 { get; set; }
}
Где модели частичного вида, например PartialViewModel1
, имеют свойства, уникальные для этой модели вида, например:
public class PartialViewModel1
{
public string Property1_1 { get; set; }
public string Property1_2 { get; set; }
public string Property1_3 { get; set; }
}
Вы можете указать родительский вид, чтобы он имел форму, содержащую частичные представления, которые можно переключать на стороне клиента с помощью небольшого количества JavaScript (который я не включил, но должен быть достаточно простым :)):
@model Models.ParentViewModel
@using (Html.BeginForm("Update", "Home", FormMethod.Post))
{
@Html.TextBoxFor(x => x.PartialViewType) /* Change this to a drop down */
@Html.Partial("PartialView1")
@Html.Partial("PartialView2")
@Html.Partial("PartialView3")
<input type="submit" value="Submit" />
}
Частичные виды выглядят следующим образом, например, для PartialView1
:
@model Models.ParentViewModel
<h3>Partial View 1</h3>
<p>@Html.TextBoxFor(x => x.PartialViewModel1.Property1_1)</p>
<p>@Html.TextBoxFor(x => x.PartialViewModel1.Property1_2)</p>
<p>@Html.TextBoxFor(x => x.PartialViewModel1.Property1_3)</p>
Итак, теперь вы можете выполнить действие Update
на вашем контроллере, пройдя через ParentViewModel
:
[HttpPost]
public ActionResult Update(ParentViewModel model)
{
// Do whatever processing required.
// You can switch on model.PartialViewType to process the appropriate PartialView fields
return View("Index", model);
}
При отправке модель должна содержать все, что было отправлено в соответствующих свойствах модели с частичным представлением.
Надеюсь, это поможет!