如何从asp.net核心中的视图重定向到另一个视图



我已经为ASP.NET核心MVC中的登录视图编写了以下代码:

@using Microsoft.AspNetCore.Http
@inject Microsoft.AspNetCore.Http.IHttpContextAccessor HttpContextAccessor
@{
ViewData["Title"] = "Login";
Layout = null;
}
<head>
</head>
<body>
@if (!string.IsNullOrEmpty(HttpContextAccessor.HttpContext.Session.GetString("User")))
{
//redirect to home page
}
<div class="main">
<p class="sign" align="center">Sign in</p>
<form class="form1" asp-action="Login" asp-controller="User" method="post" enctype="multipart/form-data">
<input class="un" type="text" align="center" placeholder="Username" name="username" id="username">
<input class="pass" type="password" align="center" placeholder="Password" name="Password" id="password">
<input type="submit" class="submit" align="center" value="Sign in" id="signIn">
</form>
</div>
<br />
</body>

如果Session包含密钥User的数据

  • 那么我不想显示登录页面
  • 相反,我想将页面重定向到HomeControllerIndex操作

如何实现这一点?

只有javascript才能做到这一点。这是因为视图是当前请求的渲染步骤,所以不能返回重定向操作。这也不是MVC概念的好逻辑。

使用javascript:

@if (!string.IsNullOrEmpty(HttpContextAccessor.HttpContext.Session.GetString("User")))
{
//redirect to home page
<script type="text/javascript">
window.location.href = "@Url.Action("Index","HomeController")";
</script>
}

但我建议您在登录控制器中实现它。在返回操作结果之前,请检查会话中是否存在用户,然后根据需要重定向。

最新更新