Sie können es wie folgt tun:
routes.MapRoute("Default", "{category}/{subcategory}",
new { controller = "CategoryController", action = "Display", id = "" }
);
und dann in Ihrem Controller:
public class CategoryController : Controller
{
public ActionResult Display(string category, string subcategory)
{
// do something here.
}
}
Sie nicht, dass jeder die Strecke für alle Routen verwendet werden oben (Sie können nicht haben eine Info-Seite usw., sofern Sie keine expliziten Routen vor dem obigen angeben).
Sie könnten jedoch eine benutzerdefinierte Einschränkung hinzufügen, um die Route auf nur vorhandene Kategorien zu beschränken. Etwas wie:
public class OnlyExistingCategoriesConstraint : IRouteConstraint
{
public bool Match
(
HttpContextBase httpContext,
Route route,
string parameterName,
RouteValueDictionary values,
RouteDirection routeDirection
)
{
var category = route.DataTokens["category"];
//TODO: Look it up in your database etc
// fake that the category exists
return true;
}
}
, die Sie in Ihre Route wie folgt verwenden:
routes.MapRoute("Default",
"{category}/{subcategory}",
new { controller = "CategoryController", action = "Display", id = "" },
new { categoryExists = new OnlyExistingCategoriesConstraint() }
);
Auf diese Weise wird es nicht mit anderen definierten Routen stören.
hanks jmcd ... das hat mich auf die richtige Spur gebracht und ich habe den Rest herausgefunden. (stackoverflow ist super) – WayneDV
Link-only-Antworten werden von SO abgeraten. – spender