【发布时间】:2020-07-26 20:48:30
【问题描述】:
我是新手,正在寻求帮助。 我正在使用 netcoreapp2.2 在一个已经存在的项目中工作,并设法组合了一个工作 来自多个问题和教程的模型,如下所示:
public class AdminViewModel : PageModel
{
public string Username
{
get => GetCookie("username");
}
public string Password
{
get => GetCookie("password");
}
public void OnGet()
{
}
private string GetCookie(string cookieName)
{
HttpContext context = HttpContext;
HttpRequest request = context.Request;
string result;
if (request.Cookies.TryGetValue(cookieName, out result))
{
return result;
}
return "";
}
}
与视图:
@model Regulator2App.Web.Views.Admin.AdminViewModel
@{
string username = Model.Username;
string password = Model.Password;
bool isLoggedIn = username.Equals("admin") && password.Equals("admin");
}
@if (isLoggedIn)
{
<div>"You're in!"</div>
}
else
{
<button id="cookie">Create cookies</button>
}
<script src="~/js/admin.js"></script>
还有控制器:
public class AdminController : Controller
{
[HttpGet("/admin/")]
public IActionResult AdminView()
{
return View(new AdminViewModel());
}
}
我的想法是在 Create cookies 按钮上添加一个侦听器以添加一些 cookie,然后通过模型检索它们,我面临的问题是我的 context 始终为空:
NullReferenceException: Object reference not set to an instance of an object.
AdminViewModel.GetCookie(string cookieName) in AdminView.cshtml.cs
HttpRequest request = context.Request;
如何正确访问上下文以检索 cookie?
【问题讨论】:
-
据我所知,HttpContext 属性不应为空。但是,另一种方法是注入
IHttpContextAccessor,在您找出问题所在之前,我不会建议您这样做。 -
同意,看起来不错。你能分享确切的异常堆栈跟踪吗?
标签: asp.net-core razor