我有动态页面获取查询字符串并根据参数加载当前页面,URL类似于“dynamic.aspx?p =”,p是参数。 所有页面都在同一目录中,并且具有不同的名称,如“about”,“contact”等。
问题是我如何制作next和prev按钮才能在页面之间移动而不返回所有链接所在的页面?
我认为我可以使用javascript来获取currnet页面URL并将switch-case分配给下一个和prev按钮的URL,是否有更好的方法?
我正在使用asp.net,C#和javascript。
[编辑] 忘了添加我也可以在声音背后的代码上做得更好,因为它在服务器端运行
答案 0 :(得分:1)
在服务器端执行此操作。这些方面的东西:
var strPrev="";
var strNext="";
switch(Request.QueryString["p"])
{
case "about":
strPrev="last";
strNext="contact";
break;
case "contact":
strPrev="about";
strNext="last";
break;
case "last":
strPrev="contact";
strNext="about";
}
当然,有一些方法可以表达这种更简洁(数组)或使其更灵活(配置文件或数据库)。如果你想朝这个方向走,请告诉我。
更新:这是一个以数组形式列出网页的解决方案:
var pages = new string[] { "about", "contact", "last" };
var index = Array.IndexOf(pages, Request.QueryString["p"]);
var previousPage = pages[(index + pages.Length - 1) % pages.Length];
var nextPage = pages[(index + 1) % pages.Length];
在此解决方案中,页面列在数组中(第1行)。第二行将文本表示转换为数字(从零到两)。如果找不到页面,Array.IndexOf
将返回-1,这表示数组的最后一项(因为环绕)。最后两行从数组中获取上一个或下一个项目,并使用环绕。
答案 1 :(得分:0)
存储来自查询字符串的当前pgae值并将其存储在隐藏字段中,并将prev页面分配给另一个隐藏字段,具有执行此操作的逻辑。由于导航页面将位于服务器端,因此也要使用流程服务器端。这可能比在javascript中做起来容易。