我是新手,需要帮助。 我正在使用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());
}
}
我的想法是在“创建cookie”按钮上添加一个侦听器,以添加一些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?
答案 0 :(得分:3)
HttpContext
是null
,因为您正在手动创建AdminViewModel
实例,但它应由框架创建。问题在于,您正在将razor pages与controllers混合使用,而这是完全不同的事情,不应像我在其他answer中提到的那样一起使用。