页面导航

时间:2013-03-20 10:43:27

标签: c# asp.net navigation

我有动态页面获取查询字符串并根据参数加载当前页面,URL类似于“dynamic.aspx?p =”,p是参数。 所有页面都在同一目录中,并且具有不同的名称,如“about”,“contact”等。

问题是我如何制作next和prev按钮才能在页面之间移动而不返回所有链接所在的页面?

我认为我可以使用javascript来获取currnet页面URL并将switch-case分配给下一个和prev按钮的URL,是否有更好的方法?

我正在使用asp.net,C#和javascript。

[编辑] 忘了添加我也可以在声音背后的代码上做得更好,因为它在服务器端运行

2 个答案:

答案 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中做起来容易。