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

Fre*_*red 4 asp.net-core razor-pages

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

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

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

有没有办法告诉 asp.net core 3.x 不要渲染 Razor 页面?

Fre*_*red 5

迈克·布林德的评论为我提供了找到解决方案所需的信息。您需要调整 OnGet/Post 方法以返回 IActionResult 并返回 RedirectToPageResult 对象。

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

    // do stuff
    return new PageResult();
}
Run Code Online (Sandbox Code Playgroud)