2013-04-17 161 views
0

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

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

PageID Parameter 
1  16 
2  1 
3  20 

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

从主页,当用户点击下一步,它进入与PAGEID = 1(一个特定aspx页面)的页面传递参数16

在该页面的末尾,点击下一步按钮以页面ID = 2传递参数1,然后再次单击下一步按钮,用户转到页面ID = 3,参数为20.

最后,单击此最后一页上的下一步,最后的结束页面。

我不确定如何设计/编写这样的动态页面导航。

任何想法?

回答

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.csApplication_Start,你可以像

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

添加它在ParameterizedRoute,我用一本字典,你可以添加任何其他来源,按您的情况。