Я реализую маршрутизации в веб-формах:маршрутизации на основе того же параметра (ов) шаблона и различных страниц в веб-формах
Это мои пользовательские технологические карты
public static void MyCustomRoutes(RouteCollection routes)
{
routes.Ignore("{resource}.axd/{*pathInfo}");
routes.MapPageRoute("NewsByTitle",
"{NewsTitle}",
"~/News.aspx");
routes.MapPageRoute("BlogsByTitle",
"{BlogsTitle}",
"~/ViewBlogs.aspx");
}
В моей странице по умолчанию я имею Блоги и новости, когда я нажимаю на News
, он переходит на страницу новостей, как она определена сначала в таблице маршрутизации.
, но когда я нажимаю на Blogs
, он берет маршрут новостей только.
Вот мой RedirectToRoute
для Blogs
и News
Новости:
String Url = clsMethods.GetTileByStoryId(BlogId); //My Url Param
Response.RedirectToRoute("NewsByTitle", new { NewsTitle = Url });
Блоги
String Url = clsMethods.GetTileByStoryId(BlogId);
Response.RedirectToRoute("BlogsByTitle", new { BlogsTitle = Url});
Update
По Mihir внушения я создал Custom Constraint так что будем решать мою потребность здесь это, как я реализовал Constraint Logic
public static void MyCustomRoutes(RouteCollection routes)
{
routes.Ignore("{resource}.axd/{*pathInfo}");
routes.MapPageRoute("NewsByTitle",
"{NewsTitle}",
"~/News.aspx",
false,
null,
new RouteValueDictionary
{ { "checkNewsRoute", new IsNewsConstraint() } });
routes.MapPageRoute("BlogsByTitle",
"{BlogsTitle}",
"~/ViewBlogs.aspx",
false,
null,
new RouteValueDictionary
{ { "checkRoute", new IsBlogConstraint()} });
}
Вот что Constraint
Блоги Constraint
public class IsBlogConstraint : IRouteConstraint
{
public bool Match
(
HttpContextBase httpContext,
Route route,
string parameterName,
RouteValueDictionary values,
RouteDirection routeDirection
)
{
return clsMethods.checkRoute(Convert.ToString(values["BlogsTitle"]));
}
}
News Co nstraint
public class IsNewsConstraint : IRouteConstraint
{
public bool Match
(
HttpContextBase httpContext,
Route route,
string parameterName,
RouteValueDictionary values,
RouteDirection routeDirection
)
{
return clsMethods.checkNewsRoute(Convert.ToString(values["NewsTitle"]));
}
}
Я реализовал подход ограничения только потому, что мой клиент попросил тот же шаблон URL для блога и новостей, спасибо за то, что вы нашли время и дали решение. – Webruster