如果不满足条件,则从 public async Task OnGetAsync() 重定向到不同的 Razor 页面
If criteria not met redirect to different Razor Page from public async Task OnGetAsync()
我是 "async" 和 "task" 方面的新手。
我似乎无法在 OnGetAsync() 中使用简单的 if{} else{}。
public async Task OnGetAsync()
{
if (HttpContext.Session.GetString("LoggedStatus") != null)
{
//KEEP GOING
Accounts = await _context.Accounts.ToListAsync();
}
else
{
RedirectToPage("./Index");
}
}
我收到的错误来自“帐户”页面,我试图通过使用 "RedirectToPage("./Index")" 这是我的主页来避免接近该页面。
我尝试将 "return" 字词放在 RedirectToPage 前面,但当我这样做时它变成红色。此外,如果满足第一个条件(Session 对象中有一个值),Accounts 页面将显示没有错误。所以,我很确定问题出在我试图在 "else" 语句中重定向。
NullReferenceException: Object reference not set to an instance of an object.
OESAC.Pages.Accounts.Pages_Accounts_Index.ExecuteAsync() in Index.cshtml
+
@foreach (var item in Model.Accounts)
上面的错误是在帐户中循环显示行的地方。
我不确定它为什么会到达 Accounts.chstml.
您需要在 public async Task<IActionResult> OnGetAsync()
中使用 Task<IActionResult>
,并结合 return
语句。
public async Task<IActionResult> OnGetAsync()
{
if (HttpContext.Session.GetString("LoggedStatus") != null)
{
//KEEP GOING
Accounts = await _context.Accounts.ToListAsync();
return Page();
}
else
{
return RedirectToPage("./Index");
}
}
微软的文档在这里有一些很好的阅读:
根据评论,您可以 运行 此 w/o 异步。
public IActionResult OnGet()
{
if (HttpContext.Session.GetString("LoggedStatus") != null)
{
//KEEP GOING
Accounts = _context.Accounts.ToList();
return Page();
}
else
{
return RedirectToPage("./Index");
}
}
我是 "async" 和 "task" 方面的新手。 我似乎无法在 OnGetAsync() 中使用简单的 if{} else{}。
public async Task OnGetAsync()
{
if (HttpContext.Session.GetString("LoggedStatus") != null)
{
//KEEP GOING
Accounts = await _context.Accounts.ToListAsync();
}
else
{
RedirectToPage("./Index");
}
}
我收到的错误来自“帐户”页面,我试图通过使用 "RedirectToPage("./Index")" 这是我的主页来避免接近该页面。 我尝试将 "return" 字词放在 RedirectToPage 前面,但当我这样做时它变成红色。此外,如果满足第一个条件(Session 对象中有一个值),Accounts 页面将显示没有错误。所以,我很确定问题出在我试图在 "else" 语句中重定向。
NullReferenceException: Object reference not set to an instance of an object.
OESAC.Pages.Accounts.Pages_Accounts_Index.ExecuteAsync() in Index.cshtml
+
@foreach (var item in Model.Accounts)
上面的错误是在帐户中循环显示行的地方。 我不确定它为什么会到达 Accounts.chstml.
您需要在 public async Task<IActionResult> OnGetAsync()
中使用 Task<IActionResult>
,并结合 return
语句。
public async Task<IActionResult> OnGetAsync()
{
if (HttpContext.Session.GetString("LoggedStatus") != null)
{
//KEEP GOING
Accounts = await _context.Accounts.ToListAsync();
return Page();
}
else
{
return RedirectToPage("./Index");
}
}
微软的文档在这里有一些很好的阅读:
根据评论,您可以 运行 此 w/o 异步。
public IActionResult OnGet()
{
if (HttpContext.Session.GetString("LoggedStatus") != null)
{
//KEEP GOING
Accounts = _context.Accounts.ToList();
return Page();
}
else
{
return RedirectToPage("./Index");
}
}