返回布局中的部分视图

时间:2016-08-09 18:24:48

标签: asp.net-mvc-5

查看:

@{Html.RenderAction("Login", "Account");}

控制器

//
// GET: /Account/Login
[AllowAnonymous]
[ChildActionOnly]
public ActionResult Login(string returnUrl)
{
    ViewBag.ReturnUrl = returnUrl;
        return PartialView("_LoginPartial");
}

//
// POST: /Account/Login
[HttpPost]
[AllowAnonymous]    
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
    if (!ModelState.IsValid)
    {
         return PartialView("_LoginPartial", model);
    }
    // enter code here
}

我只是个新手,所以,如果你不介意,你可以帮助我吗?

我的问题:

如果ModelState无效。如何返回PartialView("_LoginPartial", model)并只更新布局中的验证错误消息: https://gyazo.com/ded5ec78e1b6a7bda96520fcca3879a3

目前,我只返回PartialView,如下所示: https://gyazo.com/b2fd098a5142837ee7ac8472670bcaa7

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法:

您获取白页而不是详细信息的原因视图是因为我不是不显眼地提交表单。您需要使用ajax-post表单,否则,如果您有错误,您的操作将返回您的PartialView,但它会将其作为新页面返回给浏览器。

在AjaxOptions中,为UpdateTargetId参数指定表单的div-container ID。

查看

<div id="login-target">
        @{ Html.RenderAction("Login", "Account");}
</div>

在部分视图中

@using (Ajax.BeginForm("Login", "Account", new AjaxOptions {
                    HttpMethod = "POST",
                    InsertionMode = InsertionMode.Replace,
                    UpdateTargetId = "login-target" }))
{
  // add your form elements here
}

参考:http://forums.asp.net/t/1923712.aspx?Validation+in+Partial+View+after+form+postback