簡體   English   中英

如何處理 NullProviderCultureResult? 沒有重定向就渲染首頁是不是很奇怪?

[英]How to handle NullProviderCultureResult? Isn't it strange to render the homepage without redirection?

在 Net 7 項目中,我在Program中設置本地化:

builder.Services.Configure<RequestLocalizationOptions>(x => {
  x.AddSupportedCultures("pt", "en");
  x.AddSupportedUICultures("pt", "en");
  x.SetDefaultCulture("pt");
  x.RequestCultureProviders.Clear();
  x.AddInitialRequestCultureProvider(new RouteDataRequestCultureProvider { RouteDataStringKey = "culture" });
});

application.UseRequestLocalization();

我有兩個 Razor 頁面(索引和關於):

Index: @page "{culture?}"

About: @page "/{culture?}/about"

我可以使用以下方式訪問主頁(索引):

/
/en
/pt

但我只能使用以下方法訪問“關於”頁面:

/en/about
/pt/about

當我嘗試訪問“/about”時,url 沒有更改,但呈現主頁。

這不奇怪嗎?

不應該重定向到索引並更改索引 Url 嗎?

或者甚至重定向到“/pt/about”,因為 PT 是默認文化?

我檢查了RouteDataRequestCultureProvider源,我有:

  if (culture == null && uiCulture == null)
  {
    // No values specified for either so no match
    return NullProviderCultureResult;
  }

我不能定義出現NullProviderCultureResult時要做什么嗎?

這可能無法回答您的問題,但至少可以解釋為什么它會這樣工作。

但我只能使用以下方法訪問“關於”頁面:

/en/about
/pt/about

當我嘗試訪問“/about”時,url 沒有更改,但呈現主頁。

這基本上是因為 url "/about" 與路由/{culture}匹配,因此它假定"culture=about" ,結果它重定向到索引頁面,因為它與路由匹配:

Index: @page "{culture?}"

但是,由於沒有名為“about”的文化,因此在您的案例中呈現默認文化“pt”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM