Я хотел бы иметь один маршрут, который дает возможность выбора двух URL, но привязан к одному действию. Хорошим примером будет многоязычное приложение. Например, английский и французский.
Поначалу это кажется простым, технически вы можете сделать:
routes.MapRoute(
"the hi route english" ,
"welcome/sayhi/{id}" ,
new { controller = "Welcome" , action = "SayHi" , id = UrlParameter.Optional }
);
routes.MapRoute(
"the hi route french" ,
"bienvenu/direallo/{id}" ,
new { controller = "Welcome" , action = "SayHi" , id = UrlParameter.Optional }
);
Но это означает, что вам придется определить два маршрута для каждого действия. Или немного лучшее решение, создайте собственный класс Route, который принимает больше параметров для обработки двуязычия.
Если я выберу вариант 1 или 2, это означает, что я должен определить каждый отдельный маршрут WelcomeController, потому что я не могу использовать {action} в своем маршруте.
В идеале я хотел бы иметь возможность определить хотя бы имя действия с помощью метаданных, а затем получить его с помощью отражения или чего-то еще.
т.е:.
[ActionName( { "fr", "direallo" }, {"en", "sayhi"})]
public ActionResult SayHi(string id){
//check current thread culture...
}
Я не совсем уверен, с чего начать, есть идеи? Советы?
Спасибо,