部分视图在aspnet核心中发布子模型?

时间:2017-03-07 09:08:17

标签: c# asp.net-mvc asp.net-core

我有一个视图,其中包含各种不同部分的标签。我已将每个标签实现为部分视图。

有一个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,因为其他标签可能有问题或根据视图的状态不存在。

我的目标:

  • 利用特定于子视图模型的ModelState验证。
  • 回帖后网址不得更改。

0 个答案:

没有答案