3

私には3つの特定のルートがあります:

    routes.MapRoute(
       "Home Page",
       "", 
       new { controller = "Home", action = "Index" } 
       );

    routes.MapRoute(
       "Admin Section",
       "AdminSection/{action}/{id}",
       new { controller = "AdminSection", action = "Index", id = UrlParameter.Optional }
       );

    routes.MapRoute(
       "Listings",
       "{controller}/{action}/{id}",
       new { controller = "Listings", action = "Index", id = UrlParameter.Optional }
       );

基本的に、最初の2つのルートは計画どおりに機能しますが、ルートに特に含まれていないものはすべてlistingsコントローラーにリダイレクトする必要があります。

私はまだルーティングにまったく慣れておらず、この1時間、運がなくてもこれをグーグルで検索しようとしています。ここで何が起こっているのかは正確にわかっていますが、修正方法がわかりません。

RouteDebuggerを使用しましたが、ルートに到達していることがわかりますが、問題はListings、コントローラーが指定されていない場合にのみコントローラーに移動することです。ただし、明らかに、そこには常に何かがあります。

私はいくつかの異なる組み合わせを試しました-URLの{controller}一部を削除し、デフォルト値を定義することで勝者になると思いましたが、あまり運がありません。

誰かが私が何をする必要があるか知っていますか?

4

3 に答える 3

4

これはどう:

routes.MapRoute("Listings", "{action}/{id}", 
        new { controller = "Listings", action = "Index", id = UrlParameter.Optional });

site.com/test:

action: test、、controller: listingに行きますid = blank

ここに画像の説明を入力してください

于 2011-09-23T05:05:17.477 に答える
3

編集:私が理解しているように、あなたはキャッチオールルートが必要です。

http://richarddingwall.name/2008/08/09/three-common-aspnet-mvc-url-routing-issues/

routes.MapRoute("Listings", "{*url}",
    new { controller = "Listings", action = "Index" }
);

オリジナル:

現時点ではこれをテストすることはできませんが

routes.MapRoute(
   "Listings",
   "{anythingOtherThanController}/{action}/{id}",
   new { controller = "Listings", action = "Index", id = UrlParameter.Optional }
   );

これは機能するはずです。

Listingsコントローラーで、文字列パラメーター "anythingOtherThanController"を受け入れるだけで、それにバインドされます。

ここでの主な問題は、/ some/actionが/another/actionと同じアクションにマップされることです。だから私はあなたがここで何をしようとしているのかわかりません:)

于 2011-09-23T04:53:03.187 に答える
1

デフォルトルートを指定し、リストコントローラーとしてコントローラー名を指定します。このルートマッピングは、すべてのマッピングの下部に保持してください。

 routes.MapRoute(
   "Default",
   "{controller}/{action}/{id}",
   new { controller = "Listings", action = "Index", id = UrlParameter.Optional }
   );

シーケンスが混ざってすみません。

于 2011-09-23T04:53:10.183 に答える