您可以通过继承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
,我用一本字典,你可以添加任何其他来源,按您的情况。