重定向时如何避免渲染 Asp.net Core razor 页面?

How to avoid rendering Asp.net Core razor pages when redirecting?

我在 OnGet 方法的开头有代码,基本上只是检查查询字符串参数是否存在,如果不存在,则在 Response 对象上设置重定向,returns。

我发现它仍然尝试呈现页面,最终抛出 NullReferenceException。

我显然可以通过确保 viewbag 中的值不为空来解决此问题,但我觉得更好的解决方案是不呈现 razor 页面。我进行了一些谷歌搜索,但没有找到任何相关信息。

有没有办法告诉 asp.net 核心 3.x 不要渲染剃刀页面?

Mike Brind 的评论为我提供了找到解决方案所需的信息。您需要将 OnGet/Post 方法调整为 return IActionResult 和 return RedirectToPageResult 对象。

public IActionResult OnGet() {
    var queryParam = Request.Query["queryParam"].ToString();
    if(string.IsNullOrWhiteSpace(queryParam))
        return new RedirectToPageResult("OtherPageName");

    // do stuff
    return new PageResult();
}