问题描述
我已经在ASP.NET Core 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
的数据
我该如何实现?
解决方法
除了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>
}
但是我建议您在登录控制器中实现它。返回操作结果之前,请检查会话中是否存在用户,然后根据需要重定向。