0

我有一个路由配置文件,我正在尝试路由遵循公式 .com/{a page}/{a subpage} 的所有 URL,以路由到特定页面 .com/Default/Page.aspx。我的问题是它对所有页面(即.com/Account/Login.aspx)执行此操作。有没有办法指定我希望它仅在用户在地址栏中键入时才路由到该页面,可能只有当他们遗漏了 .aspx 扩展名时?这就是我目前所拥有的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.Membership.OpenAuth;
using System.Web.Routing;
using Microsoft.AspNet.FriendlyUrls;

namespace CouponsForGiving
{
    public static class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.Ignore("{resource}.axd/{*pathInfo}");
            routes.MapPageRoute("LearnMore", "LearnMore", "~/LearnMore.aspx");
            routes.MapPageRoute("DefaultPage", "{nponame}", "~/Default/NPOPage.aspx");
            routes.MapPageRoute("CampaignPage", "{nponame}/{campaignname}", "~/Default/CampaignPage.aspx"); //This one routes a lot of other pages
            routes.EnableFriendlyUrls();
        }
    }
}

谢谢!

4

1 回答 1

0

这里的问题是覆盖路线。如果有 2 条具有相同数量参数的路由并且没有硬编码值,它将始终考虑第一个已声明的路由。例如,如果注册了以下 2 条路线,

routeCollection.MapPageRoute("LearnMore", "{param1}/{param2}", "~/About.aspx");
routeCollection.MapPageRoute("DefaultPage", "{param3}/{param4}", "~/Account/Login.aspx");

在上述情况下,仅将请求 About.aspx 页面的 LearnMore 路由视为有效。

您可以执行以下操作:

routeCollection.MapPageRoute("LearnMore", "learnmore/{param1}/{param2}", "~/About.aspx");
routeCollection.MapPageRoute("DefaultPage", "default/{param3}/{param4}", "~/Account/Login.aspx");

这将重定向到相应的页面。您可以通过以下 URL 了解有关 URL 路由的更多详细信息。

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

谢谢和问候, Munjal

于 2013-10-11T11:29:22.897 回答