在视图中使用一些带有 post 操作的 PartialView?

Use some PartialView with post action in view?

在 jquery 选项卡中有一个注册视图有两个 PartialView(通过 phone 注册或通过电子邮件注册)。

我在父视图中被称为具有以下代码的那些人:

<div id="tabs" class="tabs">
    <nav>
        <ul>
            <li><a href="#section-1" class="fa fa-mobile"><span>موبایل</span></a></li>
            <li><a href="#section-2" class="fa fa-envelope"><span>ایمیل</span></a></li>
        </ul>
    </nav>
    <div class="content">
        <section id="section-1">
            @Html.Partial("_MobileRegister", new S6.ViewModels.MobileRegister())
        </section>
        <section id="section-2">
            @Html.Partial("_EmailRegister" , new S6.ViewModels.EmailRegister())
        </section>
    </div>
</div>

控制器和动作:

public ActionResult Register()
{
    return View();
}

public PartialViewResult _MobileRegister()
{
    return PartialView("_MobileRegister");
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult MobileRegister(MobileRegister model)
{
     if (ModelState.IsValid)
     {
     }
     return PartialView("~/Views/Account/_MobileRegister.cshtml", model);
}

现在,当数据 post 生效时,如果 ModelState 无效或由于任何原因导致 return PartialView 被调用,PartialView 将显示在单独的页面中。

怎么了?

如果您 return

中没有任何内容
if (ModelState.IsValid)
     {
     }

您的函数将始终return PartialView。在 if.

中添加 return 语句

如果你想在另一个视图上渲染 "Partial Views",你必须使用 Ajax 而不是直接 post。 Ajax.BeginForm 是一个很好的解决方案。

我在这里找到了一个完整的例子:

https://www.pluralsight.com/guides/asp-net-mvc-using-ajax-helpers-with-razor-partial-views