Asp.net core 重定向时如何避免呈现Asp.net Core razor页面?
在我的OnGet方法的开头有一些代码,基本上是说只检查查询字符串参数是否存在,如果不存在,则在响应对象上设置重定向并返回 我发现它仍然试图呈现页面,结果抛出一个NullReferenceException 显然,我可以通过确保viewbag中的值不为null来解决这个问题,但我觉得更好的解决方案是不渲染razor页面。我在谷歌上搜索了一下,没有找到任何相关信息Asp.net core 重定向时如何避免呈现Asp.net Core razor页面?,asp.net-core,razor-pages,Asp.net Core,Razor Pages,在我的OnGet方法的开头有一些代码,基本上是说只检查查询字符串参数是否存在,如果不存在,则在响应对象上设置重定向并返回 我发现它仍然试图呈现页面,结果抛出一个NullReferenceException 显然,我可以通过确保viewbag中的值不为null来解决这个问题,但我觉得更好的解决方案是不渲染razor页面。我在谷歌上搜索了一下,没有找到任何相关信息 有没有办法告诉asp.net core 3.x不要呈现razor页面?Mike Brind的评论为我提供了找到解决方案所需的信息。您需要
有没有办法告诉asp.net core 3.x不要呈现razor页面?Mike Brind的评论为我提供了找到解决方案所需的信息。您需要调整OnGet/Post方法以返回IActionResult和RedirectToPagerResult对象
public IActionResult OnGet() {
var queryParam = Request.Query["queryParam"].ToString();
if(string.IsNullOrWhiteSpace(queryParam))
return new RedirectToPageResult("OtherPageName");
// do stuff
return new PageResult();
}
您需要显示
OnGet
方法中的代码以及NullReferenceException
的源代码,以便人们了解发生了什么。如果执行RedirectToPageResult
,则当前页面将不会呈现。我在问题中确实说明我正在对响应对象使用重定向方法。