我正在像这样在Global.asax文件中创建一个路由:
RouteTable.Routes.MapPageRoute("MyRoute",
"myroute", "~/SomePage.aspx?parameter=123");
如您所见,我想从路由定义中传递查询字符串参数。
在代码隐藏页面中,我想访问参数,但是当我这样做时:
var TheParameter = Request.QueryString["parameter"];
变量为空。
如何从“路由”表中传递参数?
我想做这样的事情:
RouteTable.Routes.MapPageRoute("MyRoute123",
"myroute123", "~/SomePage.aspx?parameter=123");
RouteTable.Routes.MapPageRoute("MyRoute456",
"myroute456", "~/SomePage.aspx?parameter=456");
RouteTable.Routes.MapPageRoute("MyRoute789",
"myroute789", "~/SomePage.aspx?parameter=789");
所有路由都由同一.aspx页处理,并且我需要不同的URL来由同一页处理。
答案 0 :(得分:1)
这似乎很适合使用RouteData.DataTokens
。您可以这样设置路线:
RouteTable.Routes.MapPageRoute(
routeName: "MyRoute123",
routeUrl: "myroute123",
physicalFile: "~/SomePage.aspx",
checkPhysicalUrlAccess: false,
defaults: null,
constraints: null,
dataTokens: new RouteValueDictionary { { "parameter", "123" } }
);
然后像这样检索参数:
object parameter;
if (Page.RouteData.DataTokens.TryGetValue("parameter", out parameter))
{
// do something w/ parameter
}