You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET Core Razor Pages中动态为URL添加参数?

解决URL手动输入时自动添加culture参数导致的无限重定向问题

你的代码触发了ERR_TOO_MANY_REDIRECTS(页面无法正常工作,localhost已多次重定向您),核心原因是每次访问/post页面(不管URL里有没有culture参数),都会执行OnGet方法并强制重定向到带culture的/post,重定向后的请求又会再次进入OnGet方法,形成无限循环。

修复方案

需要先判断当前URL是否已经包含culture参数,仅当参数不存在时才执行重定向。修改后的代码如下:

public IActionResult OnGet()
{
    // 检查URL是否已经携带culture参数
    if (!Request.Query.ContainsKey("culture"))
    {
        string culture = "fa";
        if (Request.Cookies.ContainsKey("_culture"))
        {
            culture = Request.Cookies["_culture"].ToString();
        }
        // 重定向到带culture参数的当前页面
        return Redirect($"/post?culture={culture}");
    }
    
    // 已存在culture参数,正常返回页面
    return Page();
}

进阶优化(保留其他URL参数)

如果需要保留URL中原本存在的其他参数(比如/post?id=1),可以用UriBuilder来处理,避免丢失参数:

public IActionResult OnGet()
{
    if (!Request.Query.ContainsKey("culture"))
    {
        string culture = "fa";
        if (Request.Cookies.ContainsKey("_culture"))
        {
            culture = Request.Cookies["_culture"].ToString();
        }

        var uriBuilder = new UriBuilder(Request.GetDisplayUrl());
        var query = System.Web.HttpUtility.ParseQueryString(uriBuilder.Query);
        query["culture"] = culture;
        uriBuilder.Query = query.ToString();

        return Redirect(uriBuilder.ToString());
    }

    return Page();
}

内容的提问来源于stack exchange,提问作者Farna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:49:53