モバイル版のサイトを作成するには、コントローラーやビューなどを再利用したいが、モバイル版のサブディレクトリーのように見えるようにする。だからあなたのようなURLを持つことができ:すべてのルートを偽装サブディレクトリとして複製する方法
/Controller/Action/Id
/mobile/Controller/Action/Id
etc.
をこれらのルートは、理想的には同じコントローラにマップすると、私はURLがモバイル1かどうかを確認するために、ルートデータのようにどこかになります。ビュー内で@Html.ActionLink()
などを使うことができ、デフォルトではこれを指定することなくモバイル版またはデスクトップ版のいずれかにとどまりますが、どちらか一方を強制する能力があります。
これは、すべてのルートの前面にオプションのパラメータを設定することで実現できます。
routes.MapRoute(
"Default",
"{mobile}/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional, mobile = UrlParameter.Optional },
new { mobile = "mobile|" }
);
これはその後、期待通りに動作します:私は本当にすべてのルートの前にそれを追加したくないので
Takes you to either/or /mobile version depending on where you are currently:
@Html.ActionLink("Current", "Index");
/version
@Html.ActionLink("Desktop", "Index", new { mobile = "" });
/mobile version
@Html.ActionLink("Mobile", "Index", new { mobile = "mobile" });
しかしこれは、本当にラメ解決策のように思えます。たとえば、オプションの/mobile
接頭辞をすべてのルートに追加して、この作業を正しく行うなど、より良い方法でこれを行うことができます。あるいは、私は問題全体にアプローチすることができますが、これはもっと意味があるでしょうか?
これはあまりあいまいではありませんが、アドバイスをいただければ幸いです。
ありがとう、これを見てみましょう。あなたは問題が実際に世代にあることは間違いありません - それは有益なおかげです。 –