什么是 Routedata.Values[""]?
What is Routedata.Values[""]?
令我惊讶的是,竟然没有文章详细回答这个问题。我有几个关于 RouteData.Values[""]
.
的问题
我看到了这段代码:
public ActionResult Index()
{
ViewBag.Message = string.Format("{0}---{1}--{2}",
RouteData.Values["Controller"],
RouteData.Values["action"],
RouteData.Values["id"]);
return View();
}
这里基本上是读取可能听起来像控制器的 "Meta-data" 的值。还是 View 也可以传递给 Controller?
RouteData.Values 用于访问由 classes 处理路由插入的 values/querystring 值。
在您的情况下,您的路由配置 class 中定义的路由具有额外的参数,这些参数将被提供。
参数是controller,action,id。
这些参数的参数将在您的代码中的某处提供。
当你从更高的级别开始时更有意义,所以你知道你在搜索什么。
Global.asax.cs
protected void Application_Start(object sender, EventArgs e)
{
routingActions.RegisterCustomRoutes(RouteTable.Routes);
}
另一个class定义了上面的方法:
public void RegisterCustomRoutes(RouteCollection routes)
{
routes.MapPageRoute("searchdetails", "searchdetails/{orderID}/{PageIndex}/{PageSize}", "~/View/SearchDetails.aspx");
}
以下代码创建超链接。主要区别在于 HREF 的构建方式。
在这种情况下,"searchdetails" 在包含我的路由配置的 class 中定义。
linkToDetails.HRef = GetRouteUrl("searchdetails",
new
{
orderID = someOrderID,
PageIndex = currentPageIndex,
PageSize = PageSize
});
最后,目标页面需要用到第3步传递的这个信息。
这是我们使用 RouteData.Values[""]
的地方
protected void Page_Load(object sender, EventArgs e)
{
var _orderid = Page.RouteData.Values["orderID"].ToString();
var _PageIndex = Convert.ToInt32(Page.RouteData.Values["PageIndex"]);
var _PageSize = Convert.ToInt32(Page.RouteData.Values["PageSize"]);
}
RouteData 是基本Controller class 的一个属性,因此您可以在任何控制器中访问RouteData。 RouteData 包含当前请求的路由信息。您可以使用 RouteData 获取控制器、操作或参数信息,如下所示。
注意需要转换成合适的数据类型或者使用隐式类型变量var.
令我惊讶的是,竟然没有文章详细回答这个问题。我有几个关于 RouteData.Values[""]
.
我看到了这段代码:
public ActionResult Index()
{
ViewBag.Message = string.Format("{0}---{1}--{2}",
RouteData.Values["Controller"],
RouteData.Values["action"],
RouteData.Values["id"]);
return View();
}
这里基本上是读取可能听起来像控制器的 "Meta-data" 的值。还是 View 也可以传递给 Controller?
RouteData.Values 用于访问由 classes 处理路由插入的 values/querystring 值。
在您的情况下,您的路由配置 class 中定义的路由具有额外的参数,这些参数将被提供。
参数是controller,action,id。
这些参数的参数将在您的代码中的某处提供。
当你从更高的级别开始时更有意义,所以你知道你在搜索什么。
Global.asax.cs
protected void Application_Start(object sender, EventArgs e) { routingActions.RegisterCustomRoutes(RouteTable.Routes); }
另一个class定义了上面的方法:
public void RegisterCustomRoutes(RouteCollection routes) { routes.MapPageRoute("searchdetails", "searchdetails/{orderID}/{PageIndex}/{PageSize}", "~/View/SearchDetails.aspx"); }
以下代码创建超链接。主要区别在于 HREF 的构建方式。 在这种情况下,"searchdetails" 在包含我的路由配置的 class 中定义。
linkToDetails.HRef = GetRouteUrl("searchdetails", new { orderID = someOrderID, PageIndex = currentPageIndex, PageSize = PageSize });
最后,目标页面需要用到第3步传递的这个信息。 这是我们使用 RouteData.Values[""]
的地方protected void Page_Load(object sender, EventArgs e) { var _orderid = Page.RouteData.Values["orderID"].ToString(); var _PageIndex = Convert.ToInt32(Page.RouteData.Values["PageIndex"]); var _PageSize = Convert.ToInt32(Page.RouteData.Values["PageSize"]); }
RouteData 是基本Controller class 的一个属性,因此您可以在任何控制器中访问RouteData。 RouteData 包含当前请求的路由信息。您可以使用 RouteData 获取控制器、操作或参数信息,如下所示。
注意需要转换成合适的数据类型或者使用隐式类型变量var.