Have you tried something like this?
void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute(
"Home",
string.Empty,
"~/Default.aspx"
);
routes.MapPageRoute(
"Category",
"Category/{Cat}/{*queryvalues}",
"~/templates/Category.aspx"
);
routes.MapPageRoute(
"Content",
"Content/{Cont}{*queryvalues}",
"~/templates/Content.aspx"
);
}
And then make sure the URLs have either Category or Content in the path. You still get the catch-all with *queryvalues
EDIT:
If you have the following uri http://www.example.com/Content/Press
you can access Press
by using the following:
Page.RouteData.Values["Cont"].ToString();
So, in your Content.aspx page, grab that string and then use that to determine which site the user was trying to get to.
You need to include some kind of static URL differentiator so that the MapRouter can find where to map the page.
If you don't include the static Category
or Content
in the beginning of the uri, the MapRouter will always be satisfied with the first map (the Category mapping) and never know to skip it.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…