您可以通过继承RouteBase
类来定义自定义路由。
一个例子 -
public class ParameterizedRoute : RouteBase
{
const Dictionary<string,int> CustomParameters = new Dictionary<string,int> {{"1",16},{"2",1},{"3",20} };
public override RouteData GetRouteData(HttpContextBase httpContext)
{
var routeData = new RouteData(this, new MvcRouteHandler());
routeData.Values.Add("controller", "Datasheet");
routeData.Values.Add("action", datasheetUrl.Action);
var pageId = httpContext.Request.QueryString["PageId"].ToString();
var param = CustomParameters[pageId];
routeData.Values.Add("PageId", pageId);
routeData.Values.Add("Parameter", param);
return routeData;
}
}
在这里,我假设您PageId
通过QueryString
并用于RouteData
传递值。
在你global.asax.cs
的Application_Start
中,你可以像这样添加它
RouteTable.Routes.Add("CustomRoutes", new ParameterizedRoute());
在ParameterizedRoute
中,我使用了字典,您可以根据自己的情况添加任何其他来源。