在我的第一个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,它会进入最终结束页面。
我不确定如何设计/编码此类动态页面导航。
有什么想法吗?
答案 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());
中,我使用过字典,您可以根据自己的情况添加任何其他来源。