如何从 asp.net 核心中的视图重定向到另一个视图
how to redirect to another view from view in asp.net core
我在 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
的数据
- 那我不想显示登录页面
- 相反,我想将页面重定向到
HomeController
的 Index
操作。
我怎样才能做到这一点?
除了 javascript 别无他法。这是因为视图是当前请求的渲染步骤,你不能 return 重定向操作。这也不是 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>
}
但我建议您在登录控制器中实现它。在 returning 操作结果之前,检查会话中是否存在 User,然后在需要时重定向。
我在 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
- 那我不想显示登录页面
- 相反,我想将页面重定向到
HomeController
的Index
操作。
我怎样才能做到这一点?
除了 javascript 别无他法。这是因为视图是当前请求的渲染步骤,你不能 return 重定向操作。这也不是 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>
}
但我建议您在登录控制器中实现它。在 returning 操作结果之前,检查会话中是否存在 User,然后在需要时重定向。