1

そのため、MVC に基づく DNN 6.2 サービス フレームワークで基本的な Hello World サービスを実行しています。例から取られたルートは次のとおりです。

routeManager.MapRoute("MyServices", "{controller}/{action}", new[] { "HelloWorldServices" });

アクションが ~/DesktopModules/MyServices/API/Welcome/HelloWorld に移動すると、HelloWorld 関数が呼び出されて機能します。これまでのところ、私はこれを行うことができることを理解することができました:

routeManager.MapRoute("MyServices", "{controller}/{action}/{userID}", new[] { "HelloWorldServices" });

~/DesktopModules/MyServices/API/Welcome/users に移動すると、ID のオプションのパラメーターを持つ users 関数が呼び出され、機能しています。しかし今、私はエンドポイント ~/DesktopModules/MyServices/API/Welcome/locations を作りたいと思っています。これは場所 ID を取ることができます。私はこれを書くことはできません:

routeManager.MapRoute("MyServices", "{controller}/{action}/{locationID}", new[] { "HelloWorldServices" });

あるいは

routeManager.MapRoute("MyServices", "{controller}/locations/{locationID}", new[] { "HelloWorldServices" });

そのようには機能しません。どちらが先か (ユーザーまたは場所) は ID を認識し、2 番目は認識しません。何が機能しないかはわかりますが、何が機能するかはわかりません。多くの検索にもかかわらず、見つけることができませんでした。次のような例もいくつか見つけました。

routeManager.MapRoute("Html", "default", "", new { controller = "Service", action = "GetTabs" }, new[] { "DotNetNuke.Modules.Html" });

しかし、私はそれがどのように機能するのか理解できません。最終的には、「~/DesktopModules/MyServices/API/Welcome/users/userid/locations/」もやりたいと思います。誰かが私にいくつかの例を与えることができれば、それは大歓迎です!

更新:答えに基づいて、MVCルーティングを調べました。私はそれを一般的に書かなければならないことに気付き、今ではこれらが機能しています:

{controller}/{action}
{controller}/{action}/{id}
{controller}/{action}/{id}/{secondaction}
{controller}/{action}/{id}/{secondaction}/{secondid}

「id」、「secondaction」、「secondid」はすべてオプションの文字列パラメーターです。したがって、「users/userid/locations/locationid」を使用できます...「locations/locationid」の部分は「users」関数で処理されます。

4

1 に答える 1

0

ここでの私の一般的な推奨事項は、次のようなルートマップを使用することです

{controller}/{action}/{id}

これは、一般的な既定の ASP.NET MVC ルート スタイルです。次に、オプションの id パラメータとしてのユーザー メソッドと、オプションの id パラメータを持つロケーション メソッドなどを使用できます。

これにより、真に動的なルートが得られ、管理が非常に簡単になります

于 2013-03-29T06:38:13.097 に答える