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