0

A、F、または L で始まる URL が Index アクションに送られる次のルートがあります。Cシャープの正規表現が使われているようです。

        context.MapRoute(
            "content",
            "{page}/{title}",
            new { controller = "Server", action = "Index" },
            new { page = @"^[AFL][0-9A-Z]{3}$" }
        );

同様のことをしたいのですが、今回は、メニュー、目的、ページ、またはトピックのアクションを持つ URL をインデックス アクションに移動し、「メニュー」、「目的」、「ページ」、または「トピック」という単語を渡すように指示します。パラメーターとして Index アクションに:

誰かが私にこれを行う方法を教えてもらえますか? C# のような正規表現のように見えますが、2 番目のルートに必要な式をどのように実行すればよいかわかりません。

4

2 に答える 2

1

必要なのは単純なルート制約だけです:

   context.MapRoute(
        "content",
        "{page}/{title}",
        new { controller = "Server", action = "Index" },
        new { page = @"Menus|Objectives|Pages|Topics" }
    );

そして、アクション メソッドのシグネチャは次のようになります。

public ActionResult Index(string page)
{
    ...
    return View();
}
于 2012-09-06T13:34:53.103 に答える
0

ここでこの例を見てください...

http://www.asp.net/mvc/tutorials/controllers-and-routing/creating-a-route-constraint-cs パラメーターを使用してルートを定義しました。

routes.MapRoute(
    "Content",
    "Content/{TypeOfAction}",
    new {controller="Content", action="Index"},
    new {@"\b(Menus|Objectives|Pages|Topics)\b"}

);

TypeOfActionをパラメーターとして処理するIndexアクションを持つContentControllerがあると仮定します

答えを編集しました: \b正規表現で単語の境界が見つかりました...テストはしていませんが、機能するはずです... http://www.regular-expressions.info/wordboundaries.html http://www.regular-expressions.info/ alternation.html

于 2012-09-06T13:15:22.827 に答える