【问题标题】:Navigate to page(s) dynamically动态导航到页面
【发布时间】:2013-04-17 03:00:04
【问题描述】:

在我的第一个 ASP.NET 页面(主页)中,用户回答了许多问题,这些问题决定了他们在单击“下一步”时将转到哪个页面。

例如如果下表来自用户输入:

PageID Parameter
1      16
2      1
3      20

然后它告诉系统有 3 个页面可以导航到。

从主页,当用户点击 Next 时,它会转到 PageID = 1 的页面(一个特定的 aspx 页面)并传递参数 16。

在该页面的末尾,单击“下一步”按钮将用户带到 PageID = 2 并传递参数 1 的页面,然后再次单击“下一步”按钮,用户再次使用参数 20 转到 pageID = 3。

最后,点击最后一页上的下一步,会进入最后一页。

我不确定如何设计/编码这种动态页面导航。

有什么想法吗?

【问题讨论】:

    标签: c# asp.net dynamic navigation state


    【解决方案1】:

    您可以通过继承 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.csApplication_Start 中,您可以像这样添加它

    RouteTable.Routes.Add("CustomRoutes", new ParameterizedRoute());
    

    ParameterizedRoute 中,我使用了字典,您可以根据您的情况添加任何其他来源。

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2017-12-22
      • 2019-06-05
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多