Я пытаюсь добавить пользовательский код языка перед контроллером, используя asp. net core 3.1, и код языка не является стандартным культурным кодом на C#.
Например
ru = Engli sh, tch = Chinese
Чтобы результат был:
localhost/en -> Go to Home page in English
localhost/tch -> Go to Home page in Chinese
localhost/ -> Should redirect to localhost/en
also, there are other controller that need to include the language code as well
localhost/en/blog -> Go to blog Listing page in English
localhost/blog -> Redirect to localhost/en/blog and Go to blog Listing page
localhost/en/blog/{id} -> Go to blog detail page in English
localhost/blog/{id} -> Redirect to localhost/en/blog/{id} and Go to blog detail page
localhost/en/event -> Go to event Listing page in English
localhost/event -> Redirect to localhost/en/event and Go to event Listing page
localhost/en/event/{id} -> Go to event detail page in English
localhost/event/{id} -> Redirect to localhost/en/event/{id} and Go to event detail page
В файле startup.cs я использую UseEndpoints для маршрутизации на
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "others",
pattern: "{language}/{controller}/{id?}",
defaults: new { action = "Index" });
endpoints.MapControllerRoute(
name: "default",
pattern: "{language}/{controller=Home}",
defaults: new { controller = "Home", action = "Index" });
});
Ниже приведен класс контроллера моего блога:
[Route("{language}/blog")]
[Route("blog")]
public async Task<IActionResult> Index(string language)
{
if (language == null || (!language.Equals("en") && !language.Equals("tch")))
return RedirectToAction("Index", new { language = "en" });
.......
}
Приведенный выше код работает нормально, если я ввожу localhost / en / blog и параметр языка может захватывать язык из URL, но когда я пытаюсь использовать RedirectToAction, язык становится строкой запроса localhost / blog? Language = ru, просто интересно, есть ли какие-либо настройки / неправильная кодировка ...
Любой может дать мне немного советовать? Спасибо