文章的显示都是通过id查询数据库来显示。但是文章会经常删除,因此id号可能不是连续的,所以上一篇下一篇文章,不能简单的做id加减法。

我的思路是:先将表格中所有文章的ID号全部放入一个数组中,如果文章比较多,也可以分类操作。然后通过循环数组找出上一篇下一篇文章的ID号。有了ID号,文章自然而然的就找到了。

假设文章表名为News,主键为id,标题为title:

直接上图:Controller

public ActionResult NewsContent(int? id)
{
//用pre和next变量分别存放上一篇文章和下一篇文章的id号
int pre = , next = , i = , j;
//计算总记录数
int num = db.News.Count();
int[] a = new int[num];
var query = from c in db.News.select c.id;
//将所有的文章id号全部放入一个数组中
foreach (var item in query)
{
a[i] = Convert.ToInt32(item);
i++;
}
//循环,获取上一篇和下一篇文章的ID号,分别放入变量pre和next中
for (j = ; j < num; j++)
{
if (a[j] == id)
{
if (j != ) pre = a[j - ];
if (j != num - ) next = a[j + ];
}
}
//获取上一篇文章的标题
if (pre == )
{
ViewBag.preTitle = "没有了";
ViewBag.pre = id;
}
else
{
ViewBag.preTitle = db.News.Where(c => c.id == pre).Single().Title;
ViewBag.pre = pre;
}
//获取下一篇文章的标题
if (next == )
{
ViewBag.nextTitle = "没有了";
ViewBag.next = id;
}
else
{
ViewBag.nextTitle = db.News.Where(c => c.id == next).Single().Title;
ViewBag.next = next;
}
News n = db.News.Where(c => c.id == id).Single();
return View(n);
}

不仅仅是asp.net mvc可以这样做,asp.net也可以,原理是一样的。

在视图中:NewsContent

 <div>
<label>上一篇:</label>@Html.ActionLink((string)ViewBag.preTitle, "NewsContent", new { id=ViewBag.pre})
<label>下一篇:</label>@Html.ActionLink((string)ViewBag.nextTitle, "NewsContent", new { id=ViewBag.next})
</div>

MVC3学习:实现文章上一篇下一篇链接的更多相关文章

  1. ecshop调用文章显示上一篇下一篇

    首先调用文章中的上一篇和下一篇语法为:  代码如下 复制代码 上一篇:<a href="{$next_article.url}">{$next_article.titl ...

  2. phpcms v9文章内容页调用上一篇下一篇的方法(转)

    phpcms v9文章内容页调用上一篇下一篇的方法如下,魔客吧(www.moke8.com)提示您直接摘取如下代码中的红色部分即可: 上一篇:{$previous_page[url]}" t ...

  3. ShopEx文章页添加上一篇下一篇功能

    在全部的文章页中,会常常发现都会有这么一个功能.能引导用户去查看上一篇文章或下一篇文章,而在ShopEx中,我DEZEND了一下文章模型.并没有找到上一篇这种函数功能,因此,这就须要我们手动在相应的文 ...

  4. thinkPHP中的文章详情页实现“上一篇下一篇”功能经验分享

    前段时间在公司中接触到了用thinkPHP搭建的项目,其中涉及到了文章详情页上一篇下一篇翻页的功能实现效果. 因为刚接触这套框架和PHP,所以整理一下实现该功能的经验方法. 如果有不到位的地方,欢迎指 ...

  5. wordpress文章显示同一分类下的上一篇下一篇

    我们在用wordpress开发网站的时候会在文章页中引入上一篇下一篇,但是发现新闻页的上下文章有可能是产品分类的post,这个就不太合理,如何显示同一分类下的上一篇下一篇文章呢?随ytkah一起来看看 ...

  6. thinkphp5.0 文章详情页 上一篇 下一篇

    // 上一篇下一篇(同一个分类下,先确定该分类的pid) public function frontAfter() { $param=$this->param; $front=Db::name( ...

  7. dedecms手机网站内页上一篇/下一篇的翻页功能

    修改文件include/arc.archives.class.php文件. 1.搜索 function GetPreNext($gtype='') 2.将这个函数的所有内容替换为 function G ...

  8. asp.net MVC实现文章的上一篇下一篇

    由于这个东西的原理没有什么难的(只是实现的时候有少量的坑),故直接上代码以便查阅.另:本文给出的Action附送了点击量统计. public ActionResult SingleNews(int? ...

  9. asp.net MVC实现文章的“上一篇下一篇”

    由于这个东西的原理没有什么难的(只是实现的时候有少量的坑),故直接上代码以便查阅.另:本文给出的Action附送了点击量统计. public ActionResult SingleNews(int? ...

随机推荐

  1. High-radix routers

    The idea is to reduce H (hops), by adding explicit links between physically distant routers, thus re ...

  2. c# radiobutton

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  3. excelToWord-vba

    Sub ExcelToWord() ' 利用Word程序创建文本文件,运行时word不能为打开状态 Dim WordApp As Object '搜索Dim Records As Integer, i ...

  4. mysql学习之路_高级数据操作

    关系 将实体与实体的关系,反应到最终数据表的设计上来,将关系分为三种,一对多,多对多,多对多. 所有关系都是表与表之间的关系. 一对一: 一张表的一条记录一定只对应另外一张表的一条记录,反之亦然. 例 ...

  5. Hibernate利用JDBC批操作

    @org.junit.Test public void testBatch() { session.doWork(new Work() { @Override public void execute( ...

  6. Gym-101102-K-Topological Sort

    K. Topological Sort 题面 Consider a directed graph G of N nodes and all edges (u→v) such that u < v ...

  7. asp.net上传文件夹

    最近公司做工程项目,实现文件夹上传. 网上找了一天,发现网上很多代码都存在相似问题,最后终于找到了一个符合要求的项目. 工程如下: 这里对项目的文件夹上传进行分析,实现文件夹上传,如何进行文件夹上传. ...

  8. 批量插入,批量修改的sql

    sql 1  批量插入 <insert id="batchInsert" useGeneratedKeys="true" parameterType=&q ...

  9. c51较c比较,单片机最小系统

    sfr(Special function registers):特殊功能寄存器声明 bit:位变量声明 sbit:特殊位声明 psw^2,表示psw寄存器上的第2位 << >> ...

  10. Property attributes

    There are many attributes for property as follows: atomic: Is default behavior will ensure the prese ...