0

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

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

PageID Parameter
1      16
2      1
3      20

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

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

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

最后,在最后一页上单击下一步,它会导致最后一页。

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

有任何想法吗?

4

1 回答 1

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中,我使用了字典,您可以根据自己的情况添加任何其他来源。

于 2013-04-17T03:11:21.440 回答