Los*_*ost 16 c# asp.net-mvc routedata asp.net-mvc-routing asp.net-mvc-4
我很惊讶地发现没有任何文章能够回答这个问题.我几乎没有相关的问题RouteData.Values[""].
我看到了这段代码:
public ActionResult Index()
{
ViewBag.Message = string.Format("{0}---{1}--{2}",
RouteData.Values["Controller"],
RouteData.Values["action"],
RouteData.Values["id"]);
return View();
}
Run Code Online (Sandbox Code Playgroud)
这里基本上是读取可能听起来像控制器的"元数据"的值.或者View也可以传递给Controller?
pka*_*thk 18
RouteData.Values用于访问由处理路由的类插入的值/查询字符串值.
在您的情况下,路由配置类中定义的路由具有将提供参数的其他参数.
参数是controller,action,id.
这些参数的参数将在代码中的某处提供.
当你开始更高级别时更有意义,所以你知道你在寻找什么.
Global.asax.cs
protected void Application_Start(object sender, EventArgs e)
{
routingActions.RegisterCustomRoutes(RouteTable.Routes);
}
Run Code Online (Sandbox Code Playgroud)另一个类定义了上面的方法:
public void RegisterCustomRoutes(RouteCollection routes)
{
routes.MapPageRoute("searchdetails", "searchdetails/{orderID}/{PageIndex}/{PageSize}", "~/View/SearchDetails.aspx");
}
Run Code Online (Sandbox Code Playgroud)以下代码创建一个超链接.主要区别在于HREF的构建方式.在这种情况下,"searchdetails"在包含我的路由配置的类中定义.
linkToDetails.HRef = GetRouteUrl("searchdetails",
new
{
orderID = someOrderID,
PageIndex = currentPageIndex,
PageSize = PageSize
});
Run Code Online (Sandbox Code Playgroud)最后,目标页面需要使用在步骤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"]);
}
Run Code Online (Sandbox Code Playgroud)小智 6
RouteData 是基本 Controller 类的一个属性,因此您可以在任何控制器中访问 RouteData。RouteData 包含当前请求的路由信息。您可以使用 RouteData 获取控制器、操作或参数信息,如下所示。
请注意,您需要转换为适当的数据类型或使用隐式类型变量 var。
| 归档时间: |
|
| 查看次数: |
25296 次 |
| 最近记录: |