在视图中使用部分PartialView进行后期处理吗?

时间:2018-12-03 07:24:07

标签: c# asp.net-mvc razor partial-views asp.net-mvc-partialview

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

enter image description here

我在“父视图”中被称为以下代码:

<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);
}

现在,当数据发布后,如果ModelState无效或由于某种原因导致调用return PartialView时,PartialView将显示在单独的页面中。

enter image description here

怎么了?

3 个答案:

答案 0 :(得分:2)

如果您没有在

中返回任何内容
if (ModelState.IsValid)
     {
     }

您的功能将始终返回PartialView。在该if中添加return语句。

答案 1 :(得分:1)

如果要在其他视图上呈现“部分视图”,则必须使用Ajax代替直接发布。 Ajax.BeginForm是一个很好的解决方案。

答案 2 :(得分:0)