Asp.net 核心,使用表单 ajax 从部分视图重定向到另一个视图?



我有一个Partial view,其中包含 Asp.net 核心 2.0 中的form ajax

您可以看到名为_loginPartialPartial View

@model partialView.Models.LoginViewModel
<div id="login">
<form asp-controller="Account" asp-action="Login" id="frmLogin" data-ajax="true" data-ajax-method="POST" data-ajax-update="#frmLogin" data-ajax-mode="Replace">
<div id="login">
<div class="form-group">
<input asp-for="UserName" class="form-control" />
<span asp-validation-for="UserName"></span>
</div>
<div class="form-group">
<input asp-for="Password" class="form-control" />
<span asp-validation-for="UserName"></span>
</div>
<div class="form-group pull-left ">
<button type="submit" class="btn btn-success">Submit</button>
</div>
</div>
</form>

当我向/Account/Login提交表单时,一切正常,但是登录后我想重定向到另一个Area的另一个视图

[HttpPost]
public async Task<IActionResult> Login(LoginViewModel model)
{
if (ModelState.IsValid)
{
//Success Login
return Redirect("/AdminPanel/Home/Index");
}
else
{
//if ModelState is invalid
}
//if UserName Or Password is incorrect
return PartialView("_loginpartialView", model);
}

这是LoginViewModel

public class LoginViewModel
{
[Display(Name = "UserName")]
[Required(AllowEmptyStrings = false, ErrorMessage = "Please Enter UserName")]
public string UserName { get; set; }
[Display(Name = "Password")]
[Required(AllowEmptyStrings = false, ErrorMessage = "Please Enter Password")]
[DataType(DataType.Password)]
public string Password { get; set; }

}

我也使用此代码在index中显示Partial View

@Html.Partial("_loginpartialView")

但是有一个问题。成功登录后,新视图替换为Partial view。换句话说它不会导航到/AdminPanel/Home/Index和新View替换为Partial View,在这种情况下如何导航到另一个视图?

由于您正在处理 AJAX 回调,因此无法在服务器端执行重定向。这必须在客户端使用 Javascript 处理。

检查来自服务器的响应,如果是重定向,则将 window.location 设置为收到的 URL。

最新更新