Member 10711621 Ответов: 1

Случайное и многократное переписывание URL-адресов для одной страницы


Hello,
 
I am developing a  web application in Asp.Net C#. I have a filter with four options. user can select anyone from that filters and then URL will be changed according. I am writing rules for them in my Global.aspx file. I have implemented urls but those are not perfectly working.
I am giving you my webiste link to check urls
 
URL are not working according to  filters
here is my website link
 
<a href="http://www.partykaro.com/Delhi/Events"></a>http://www.partykaro.com/Delhi/Events 


Что я уже пробовал:

routes.MapPageRoute("event-listing-city", "{city}/events/{category}/{PriceRange}/{EventEntry}/{PropertyType}", "~/EventListing.aspx", false, new RouteValueDictionary {{"category", "all"}, {"PriceRange", "price"}, {"EventEntry", "entry"}, {"PropertyType", "ptype"} });

        routes.MapPageRoute("event-listing-zone", "{city}/{zone}/events/{category}/{PriceRange}/{EventEntry}/{PropertyType}", "~/EventListing.aspx", false, new RouteValueDictionary {{"category", "all"}, {"PriceRange", "price"}, {"EventEntry", "entry"}, {"PropertyType", "ptype"} });

        routes.MapPageRoute("event-listing-locality", "{city}/{zone}/{locality}/events/{category}/{PriceRange}/{EventEntry}/{PropertyType}", "~/EventListing.aspx", false, new RouteValueDictionary {{"category", "all"}, {"PriceRange", "price"}, {"EventEntry", "entry"}, {"PropertyType", "ptype"} });

1 Ответов

Рейтинг:
2

Thomas Nielsen - getCore

Сегмент событий есть во всех маршрутах, логически его можно убрать или поставить впереди. Кроме того, вы должны добавить ApiController 'EventsController' для обслуживания запросов вместо этой страницы, а затем он может структурировать вызовы вашего EventsListing.aspx, если хотите.

На самом деле это выглядит так, как будто у вас в конечном счете есть только один маршрут, но даже лучше, чем предложение ниже, если вы рассмотрите возможность использования различных действий на этом контроллере с неявными значениями по умолчанию (то есть вместо того, чтобы иметь параметр со значением по умолчанию на маршруте, просто не имейте этой части маршрута и реализуйте значение по умолчанию в действии.

RouteTable.Routes.MapHttpRoute(
                name: "omnirout",
                routeTemplate: "events/{city}/{zone}/{locality}/{category}/{pricerange}/{evententry}/{propertytype}",
                defaults: new { controller = "Events", action = "GetEvents", city = "all", zone = "all", locality = "all", category = "all",  pricerange="all", evententry = "all", propertytype = "all" } 
            );


возможно, более интуитивным будет опустить значения по умолчанию и иметь больше, помните, что маршруты оцениваются последовательно, и вы можете использовать свой маршрут с значениями по умолчанию в качестве аварийного выхода

RouteTable.Routes.MapHttpRoute(
                name: "allevents-in-city-zone-route",
                routeTemplate: "events/{city}/{zone}",
                defaults: new { controller = "Events", action = "GetAllEventsInCityZone"} 
            );
RouteTable.Routes.MapHttpRoute(
                name: "allevents-in-city-route",
                routeTemplate: "events/{city}",
                defaults: new { controller = "Events", action = "GetAllEventsInCity" } 
            );
RouteTable.Routes.MapHttpRoute(
                name: "allevents-route",
                routeTemplate: "events",
                defaults: new { controller = "Events", action = "GetAllEvents" } 
            );
RouteTable.Routes.MapHttpRoute(
                name: "omnirout",
                routeTemplate: "events/{city}/{zone}/{locality}/{category}/{pricerange}/{evententry}/{propertytype}",
                defaults: new { controller = "Events", action = "GetEvents", city = "all", zone = "all", locality = "all", category = "all",  pricerange="all", evententry = "all", propertytype = "all" } 
            );