更改区域性时无法获得带有查询字符串的url

问题描述 投票:1回答:1

文化信息当我将英语语言更改为德语时,没有得到古特尔字符串

Startup.cs

 services.Configure<RequestLocalizationOptions>(options =>
          {
                    var supportedCultures = new[]
                    {
                                new CultureInfo("de-DE"),
                                new CultureInfo("en-US"),
                    };
                options.DefaultRequestCulture = new RequestCulture(culture: "de-DE", uiCulture: "de-DE");
                options.SupportedCultures = supportedCultures;
                options.SupportedUICultures = supportedCultures;
                options.RequestCultureProviders = new List<IRequestCultureProvider>
            {
                new QueryStringRequestCultureProvider(),
                new CookieRequestCultureProvider()
            };
        });

当它们在url中没有qurey字符串时,它可以正常工作,但是我想返回带有完整qurey字符串的特定url。我提出了一种设置文化的方法,如下所示:

    [HttpPost]
    public IActionResult SetLanguage(string culture, string returnUrl)
    {
        Response.Cookies.Append(
            CookieRequestCultureProvider.DefaultCookieName,
            CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
            new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
        );

        return LocalRedirect(returnUrl);
    }

__ Layout.cshtml

 <form id="selectLanguage" asp-controller="Home"
                                      asp-action="SetLanguage" asp-route-returnUrl="@returnUrl"
                                      method="post" class="form-horizontal" role="form">
              <select name="culture" onchange="this.form.submit();"
                          asp-for="@requestCulture.RequestCulture.UICulture.Name" 
                         asp-items="cultureItems">
             </select>
 </form>

当我改变语言时。然后它给出了如下图所示的网址:

enter image description here

如何获得完整的Qurey字符串,如下图:

enter image description here

cultureinfo asp.net-core-2.2 asp.net-core-localization
1个回答
0
投票

尝试如下更改returnUrl

var returnUrl = string.IsNullOrEmpty(Context.Request.Path) ? "~/" : $"~{Context.Request.Path.Value+Context.Request.QueryString.Value}";
© www.soinside.com 2019 - 2024. All rights reserved.