Blazor Server本地化控制器重定向丢失URL参数的解决方法咨询
解决Blazor Server语言切换时重定向丢失查询参数的问题
要解决重定向时丢失查询参数的问题,只需在控制器中读取请求的查询参数,再将其拼接到重定向的目标URL中即可。
修改后的控制器代码(以enUS控制器为例)
[Route("/[controller]")] [ApiController] public class enUS : ControllerBase { public ActionResult SetCulture() { // 设置语言Cookie Response.Cookies.Append(CookieRequestCultureProvider.DefaultCookieName, CookieRequestCultureProvider.MakeCookieValue(new RequestCulture("en-US"))); // 获取请求中的所有查询参数 var queryParams = HttpContext.Request.Query; // 构造符合规范的查询字符串 var queryString = QueryString.Create(queryParams); // 拼接最终重定向URL var redirectUrl = $"/{queryString}"; return Redirect(redirectUrl); } }
关键说明
- 通过
HttpContext.Request.Query可获取请求携带的所有查询参数,兼容单个或多个参数的场景。 - 使用
QueryString.Create(queryParams)能自动生成合规的查询字符串,避免手动拼接出现格式错误。 - 若只需保留特定参数(比如仅保留
link),可单独提取处理:var linkParam = HttpContext.Request.Query["link"]; var queryString = string.IsNullOrEmpty(linkParam) ? "" : $"?link={linkParam}"; var redirectUrl = $"/{queryString}";
修改后,访问https://localhost:7058/enUS/?link=OQ==时,会重定向到https://localhost:7058/?link=OQ==,参数不会丢失。
内容的提问来源于stack exchange,提问作者Simon3
相关产品推荐
相关产品推荐

