0

変数が null の場合、別のルートにリダイレクトしようとしています。どのようにリダイレクトループエラーが発生しますか。

ルート:

routes.MapPageRoute("activities", "activities/{category}", "~/Pages/showAllActivities.aspx");
routes.MapPageRoute("activitiesSubPage", "activities/{page}", "~/default.aspx");

showAllActivities.aspx のコード:

if (category != null)
{
    ..
}
else
    Response.RedirectToRoute("activitiesSubPage", new { page = "1"});

両方のルート URL は「アクティビティ」で始まる必要があります。

どうすればこれを達成できますか?

4

3 に答える 3

1

ルートのカテゴリとページのパラメーターが両方とも数値の場合、ASP.NET が識別できる方法がないため、たとえば、/activities/2最初のルートで一致して処理されます...

それらが異なる場合、たとえば、カテゴリが文字列でページが数値である場合、MapPageRoute にこのオーバーロードがあり、ルールに既定値と制約を指定できます (たとえば、/activities/{page}ルートが数値のみを受け入れるようにするには:

routes.MapPageRoute("activitiesSubPage", "activities/{page}", "~/default.aspx",
    new RouteValueDictionary() { { "page", 0 } },
    new RouteValueDictionary() { { "page", "[0-9]+" } });
);
routes.MapPageRoute("activities", "activities/{category}", "~/Pages/showAllActivities.aspx");

/activitesこの設定ではルートが に送信されることに注意して/activities/0ください。デフォルトは 0 です。上記の {page} ルートを配置したので、最初に評価され、通過したものはすべて次のルールによってインターセプトされます。

于 2012-10-20T19:58:02.493 に答える