2

私は自分自身とパートナーによって販売されている製品を 2 年間開発してきました。マネージャーは、デモ ライセンスを使用してデモ アプリとしてのみ使用されるソース コードをパートナーに提供したいと考えています。

すべてのデモ モジュールは既に開発されていますが、ライセンスに記載されている場合は、ルート (url) に "Demo" を表示する必要があります。

例:

へのすべての呼び出し

/コントローラー1/アクション1

URL を次のように変換する必要があります

/デモ/コントローラー1/アクション1

初挑戦:

routes.MapRoute(
    name: "DefaultDemo",
    url: "Demo/{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

ただし、アプリ内のコントローラー/アクションへの呼び出しごとに「デモ」を設定する必要があるため、これは部分的に機能します。

2 回目の試行:

routes.MapRoute(
    name: "DefaultDemo",
    url: "{demo}/{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    constraints: new { demo = "Demo" }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, demo = "Demo" }
);

これでは、変数として設定し、その変数の制約として「デモ」を設定して、誰かがそれを他のテキストに変更できないようにしました。

次に、パラメーター「demo」を設定して、「デフォルト」ルートを他のルートへのリダイレクトとして使用しようとしましたが、この方法では機能しないため、明らかに失敗しました。

3 回目の試行:

var demoRoute = routes.MapRoute(
    name: "DefaultDemo",
    url: "{demo}/{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    constraints: new { demo = "Demo" }
);

routes.Redirect(x =>
    x.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional, demo = "Demo" })
)
.To(demoRoute);

最後の例では、RouteMagic ナゲットを使用して古い「デフォルト」ルートをデモ ルートにリダイレクトしようとしましたが、うまくいきませんでした。

似たようなことをした人はいますか?

4

0 に答える 0