ASP.NET Маршрутизация всех страниц

У меня есть файл конфигурации маршрута, в котором я пытаюсь перенаправить все URL-адреса, которые следуют формуле .com / {a page} / {a subpage}, для перехода на определенную страницу .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();
        }
    }
}

Спасибо!


person Jack    schedule 08.10.2013    source источник


Ответы (1)


Проблема здесь в переопределении маршрута. Если есть 2 маршрута с одинаковым количеством параметров и нет жестко запрограммированного значения, он всегда будет рассматривать первый маршрут, который объявлен. Например, если зарегистрированы следующие 2 маршрута,

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

В приведенном выше случае будет считаться действительным только маршрут LearnMore, который будет запрашивать страницу About.aspx.

Вы можете сделать что-то вроде ниже:

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

С уважением и уважением, Мунджал

person Munjal Pandya    schedule 11.10.2013
comment
Хорошо, но моя проблема в том, что он перенаправляется, когда я нажимаю ссылки на моем сайте, например, для входа в систему. - person Jack; 11.10.2013
comment
Чувак, не могли бы вы подробно рассказать о своей проблеме? Я не понял вашей точки зрения в приведенном выше комментарии. - person Munjal Pandya; 12.10.2013