动态导航到页面

时间:2013-04-17 03:00:04

标签: c# asp.net dynamic navigation state

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

E.g。如果下表来自用户输入:

PageID Parameter
1      16
2      1
3      20

然后它告诉系统有3页要导航到。

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

在该页面的末尾,单击Next按钮将用户带到PageID = 2传递参数1的页面,然后再次单击Next按钮,用户转到带有参数20的pageID = 3。

最后,点击最后一页上的Next,它会进入最终结束页面。

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以通过继承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.cs的{​​{1}}中,您可以添加

Application_Start

RouteTable.Routes.Add("CustomRoutes", new ParameterizedRoute()); 中,我使用过字典,您可以根据自己的情况添加任何其他来源。