gpt4 book ai didi

c# - 什么是 Routedata.Values [""]?

转载 作者:可可西里 更新时间:2023-11-01 03:08:10 26 4
gpt4 key购买 nike

令我惊讶的是,竟然没有文章详细回答这个问题。我有几个与 RouteData.Values[""] 相关的问题。

我看到了这段代码:

public ActionResult Index()
{
ViewBag.Message = string.Format("{0}---{1}--{2}",
RouteData.Values["Controller"],
RouteData.Values["action"],
RouteData.Values["id"]);

return View();
}

这里基本上是读取值,听起来可能像 Controller 的“元数据”。还是 View 也可以传递给 Controller?

最佳答案

RouteData.Values 用于访问由处理路由的类插入的值/查询字符串值。
在您的情况下,您的路由配置类中定义的路由具有附加参数,这些参数将被提供。
参数是controller,action,id。
这些参数的参数将在您的代码中的某处提供。

当您从更高的级别开始时更有意义,这样您就知道您在搜索什么。

  1. Global.asax.cs

    protected void Application_Start(object sender, EventArgs e)
    {
    routingActions.RegisterCustomRoutes(RouteTable.Routes);
    }
  2. 另一个类定义了上面的方法:

    public void RegisterCustomRoutes(RouteCollection routes)
    {
    routes.MapPageRoute("searchdetails", "searchdetails/{orderID}/{PageIndex}/{PageSize}", "~/View/SearchDetails.aspx");
    }
  3. 以下代码创建超链接。主要区别在于 HREF 的构建方式。在这种情况下,“searchdetails”在包含我的路由配置的类中定义。

    linkToDetails.HRef = GetRouteUrl("searchdetails",
    new
    {
    orderID = someOrderID,
    PageIndex = currentPageIndex,
    PageSize = PageSize
    });
  4. 最后,目标页面需要使用在步骤 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"]);
    }

关于c# - 什么是 Routedata.Values [""]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28823084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com