我有一个视图,其中包含各种不同部分的标签。我已将每个标签实现为部分视图。
有一个ViewModel有各种子类来填充选项卡中的视图和部分视图。
FormCaptureViewModel
- FormDetailViewModel
- FormBrandingViewModel
- etc
[HttpGet]
public IActionResult FormCapture()
{
return View(new FormCaptureViewModel());
}
<div class="tab-pane" id="tab2">
@Html.Partial("_FormBrandingPartial", Model.FormBranding)
</div>
<div class="tab-pane" id="tab3">
@Html.Partial("_FormDesignerPartial", Model.FormDesigner)
</div>
<div class="tab-pane" id="tab4">
@Html.Partial("_FormAnalyticsPartial", Model.FormAnalytics)
</div>
然后我希望每个表单都回传给FormCapture,如下所示:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult FormCapture(FormBrandingViewModel brandingModel)
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult FormCapture(FormDetailViewModel detailModel, SaveAction action)
{
return View();
}
每个局部视图都有一个如下所示的表单标记:
<form role="form" method="post" asp-action="FormCapture" enctype="multipart/form-data">
然而,我得到一个AmbiguousActionException:匹配多个动作。这是有道理的,因为asp不知道使用哪种方法。我该如何解决这个问题?
我试图远离使用ajax,因为在部分视图中使用脚本并不是很好。
任何想法如何实现这样的事情?当然这是复杂视图(带标签等)的正常用例吗?
我不能只在每个局部视图上提交整个FormCaptureViewModel
,因为其他标签可能有问题或根据视图的状态不存在。
我的目标: