2

次のルートを持つ ASP.NET Web フォーム プロジェクトがあります。これは通常は正常に機能しますが、最後のものを機能させることができません:

static void RegisterRoutes(RouteCollection routes)
{
    RouteTable.Routes.Ignore("{resource}.axd/{*pathInfo}");

    routes.MapPageRoute("Sidevisning",
                        "{" + Utils.Constants.RouteVariables.Article + "}",
                        "~/ArticleLayout.aspx");



    routes.MapPageRoute("Tags",
                        "tags/{" + Utils.Constants.RouteVariables.Tags + "}",
                        "~/TagsPage.aspx");

    routes.MapPageRoute("Forumpost",
                        "forums/topic/{" + Utils.Constants.RouteVariables.Post + "}",
                        "~/ForumPost.aspx");

    routes.MapPageRoute("Bruger",
                        "users/{" +
                        Utils.Constants.RouteVariables.UserProfileId + "}",
                        "~/UserProfile.aspx");

    routes.MapPageRoute("Offer",
                        "offers/{" + Utils.Constants.RouteVariables.OfferForm + "}",
                        "~/Offer.aspx");


    routes.MapPageRoute("Ret opgaver",
                        "assignments/{" + Utils.Constants.RouteVariables.Assignment + "}",
                        "~/ReviewAssignments.aspx");


    routes.MapPageRoute("Tutoring with subject",
                        "tutoring/{" + Utils.Constants.RouteVariables.TutorSubject + "}",
                        "~/tutoring/tutors.aspx");

    routes.MapPageRoute("Tutoring with subject and city",
                        "tutoring/{" + Utils.Constants.RouteVariables.TutorSubject + "}/{" + Utils.Constants.RouteVariables.TutorCity + "}",
                        "~/tutoring/tutors.aspx");

    routes.MapPageRoute("Tutoring with subject, city and level",
                        "tutoring/{" + Utils.Constants.RouteVariables.TutorSubject + "}/{" + Utils.Constants.RouteVariables.TutorCity + "}/{" + Utils.Constants.RouteVariables.TutorLevel + "}",
                        "~/tutoring/tutors.aspx");


    routes.MapPageRoute("Blog kategori",
                "category/{BlogCategoryName}",
                "~/BlogCategory.aspx");



    // be careful to switch around , it might give some pretty fucked up errors



    routes.MapPageRoute("Laes Blog",
        "{Year}/{Month}/{BlogHeadline}",
        "~/ReadBlogEntry.aspx");


    routes.MapPageRoute("Subject details",
                  "subject/{" + Utils.Constants.RouteVariables.SubjectChosen + "}/{" + Utils.Constants.RouteVariables.SubjectAction + "}",
                  "~/SubjectDetails.aspx");


}

URL を入力すると、次のようになります。

http://localhost:5744/subject/danskundervisning/articleoverview

SubjectDetails.aspx を叩きたい。

しかし、代わりに別のページにアクセスして、フロント ページにリダイレクトされました。どちらのページにアクセスしているのかわかりません。これはちょっと面倒です。

これらのまばらな情報から、ルートに何か問題があるように見えますか? 私が書いたURLを入力すると、最後のものが機能するはずではありませんか?

興味はないと思いますが、これが私の RouteVaraibles です。

 public class RouteVariables
        {
            public const string Article = "article";
            public const string OfferForm = "offers";
            public const string Forumcategory = "forumname";
            public const string Post = "posturl";
            public const string UserProfileId = "userid";
            public const string UserProfileProfilename = "userprofilename";
            public const string Tags = "tags";
            public const string Assignment = "assignment";
            public const string TutorSubject = "tutorsubject";
            public const string TutorCity = "tutorcity";
            public const string TutorLevel = "tutorlevel";

            public const string SubjectAction = "subjectionaction";

            public const string SubjectChosen = "subjectchosen";


        }
4

2 に答える 2

4

ルートの順序は重要です。常に LaesBlog Route にリダイレクトされます。したがって、このように最後に配置する必要があります

routes.MapPageRoute("Subject details",
              "subject/{" + Utils.Constants.RouteVariables.SubjectChosen + "}/{" + Utils.Constants.RouteVariables.SubjectAction + "}",
              "~/SubjectDetails.aspx");

routes.MapPageRoute("Laes Blog",
    "{Year}/{Month}/{BlogHeadline}",
    "~/ReadBlogEntry.aspx");

それが役に立てば幸い

于 2013-10-12T16:17:44.347 に答える
1

私も同じ問題に直面しました。ルート定義の順序を変更したところ、うまくいきました。ここでの問題は、ルート「Laes ブログ」にはすべての動的パラメーターがあり、ルート「件名の詳細」には 1 つの静的 (ハードコーディングされた) パラメーターと 2 つの動的パラメーターがあることです。しかし、どちらも 3 つのパラメーターを持っているため、競合します。

結論として、最後に常に静的パラメーターを使用せずにルートを記述します。

私は最近、次のリンクで同じ問題についてブログに記事を投稿しました

http://karmic-development.blogspot.in/2013/10/url-routing-in-aspnet-web-forms-same.html

以前のブログ投稿で、URL ルーティングを実装する際に直面した他の問題も投稿しました。

于 2013-10-13T13:03:51.893 に答える