次のように、WebフォームASP.NETアプリケーションでMaartenのソリューションを実装できます。
サンプルをダウンロードしてVisual Studioで開きました。それを見ると、翻訳されたルーティングの重要な部分はRoutingフォルダにあります。
Webアプリケーションで新しいクラスライブラリプロジェクトを作成し、5つのファイルをコピーしました。このプロジェクトではアセンブリ参照がいくつか見つかりませんでしたので、System.Web
とSystem.Web.Routing
を追加しました。
この後、TranslatedRouteCollectionExtensions
クラスには1つの問題しかありませんでした。 2つの拡張方法はMvcRouteHandler
を使用しました。これは、MVCに依存するコードの唯一の部分です。この依存性は、このように両方の拡張メソッドを変更排除するために:
public static TranslatedRoute MapTranslatedRoute(
this RouteCollection routes,
string name,
string url,
object defaults,
object routeValueTranslationProviders,
IRouteHandler routeHandler,
bool setDetectedCulture)
{
TranslatedRoute route = new TranslatedRoute(
url,
new RouteValueDictionary(defaults),
new RouteValueDictionary(routeValueTranslationProviders),
setDetectedCulture,
routeHandler);
routes.Add(name, route);
return route;
}
私はこのクラスライブラリプロジェクトに私のWebアプリケーションでの参照を追加しました。次のように翻訳されたルートの変更を登録するこの修正マールテンの例では
:カスタムルートハンドラを実装する
routes.MapTranslatedRoute(
"TranslatedRoute",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" },
new { controller = translationProvider, action = translationProvider },
new GeneralRouteHandler(),
true
);
は複雑なプロセスではありません。約goodarticlesが見つかります。
なぜURLをローカライズするのですか?これはSEOのことですか? –
はい、SEOが主な理由です。また、リンクを送信する(またはブックマークを保存する)と、翻訳されたコンテンツに直接導かれます(URLパラメータを追加することなく、すべてをきれいにします)。 – Spartak
この質問が表示されたときに、URL全体が狂気を書き直すことがあまりにも遠すぎたことはご存知のことです。 – Stilgar