5

次のシナリオを処理する方法を理解しようとしています。一般に、テーブルにはたくさんのレコードがあります。これらはすべて、ツリーを形成するための ID フィールドと ParentID フィールドを持っています。

Page1
 - Page2
 - Page3
Page4
 - Page5
 -- Page6

今、私は Page3 と Page6 の私のルートがそれぞれ似ているようにし/Page1/Page6たい/Page3/Page5/Page6. つまり、すべての親を URL に含めたいと考えています。

上記の結果を達成するためにコントローラーのアクション/ルーティングを設定するにはどうすればよいですか?

編集:上記の構造が動的になることを忘れていました-ノードを追加/削除/親の変更などを行うことができます.

4

3 に答える 3

3

ワイルドカード一致を使用できます。

可能なルート:

routes.MapRoute("SomeName", "{*Page}", new { controller = "ControllerName", action = "ActionName" });

アクションで文字列 Page を受け入れ、おそらく分割して手動で解析しますか?

これも役に立つかもしれません: URL ルーティング

于 2009-01-04T15:52:15.153 に答える
0

コントローラー名とアクションは固定されており、URL に基づいていないことに注意してください。

// place the more specific route first
routes.MapRoute("r1", "{parent}/{child}/{subchild}", 
    new { controller = "Page", action = "Index", parent = parent, child = child, subchild = subchild });

routes.MapRoute("r2", "{parent}/{child}", 
    new { controller = "Page", action = "Index", parent = parent, child = child });


public class PageController
{
    public ActionResult Index(string parent, string child, string? subchild)
    {
        // stuff
    }
}
于 2009-01-04T16:28:57.917 に答える
-2

使用する必要があります

routes.MapRoute("Page6", "Page3/Page5/Page6", new { controller = "Page6", action = "Index" });

または、正規表現ルーティングを使用することもできます

http://blog.sb2.fr/post/2009/01/03/Regular-Expression-MapRoute-With-ASPNET-MVC.aspx

于 2009-01-04T14:31:11.243 に答える