MVC3学习:实现文章上一篇下一篇链接
文章的显示都是通过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学习:实现文章上一篇下一篇链接的更多相关文章
- ecshop调用文章显示上一篇下一篇
首先调用文章中的上一篇和下一篇语法为: 代码如下 复制代码 上一篇:<a href="{$next_article.url}">{$next_article.titl ...
- phpcms v9文章内容页调用上一篇下一篇的方法(转)
phpcms v9文章内容页调用上一篇下一篇的方法如下,魔客吧(www.moke8.com)提示您直接摘取如下代码中的红色部分即可: 上一篇:{$previous_page[url]}" t ...
- ShopEx文章页添加上一篇下一篇功能
在全部的文章页中,会常常发现都会有这么一个功能.能引导用户去查看上一篇文章或下一篇文章,而在ShopEx中,我DEZEND了一下文章模型.并没有找到上一篇这种函数功能,因此,这就须要我们手动在相应的文 ...
- thinkPHP中的文章详情页实现“上一篇下一篇”功能经验分享
前段时间在公司中接触到了用thinkPHP搭建的项目,其中涉及到了文章详情页上一篇下一篇翻页的功能实现效果. 因为刚接触这套框架和PHP,所以整理一下实现该功能的经验方法. 如果有不到位的地方,欢迎指 ...
- wordpress文章显示同一分类下的上一篇下一篇
我们在用wordpress开发网站的时候会在文章页中引入上一篇下一篇,但是发现新闻页的上下文章有可能是产品分类的post,这个就不太合理,如何显示同一分类下的上一篇下一篇文章呢?随ytkah一起来看看 ...
- thinkphp5.0 文章详情页 上一篇 下一篇
// 上一篇下一篇(同一个分类下,先确定该分类的pid) public function frontAfter() { $param=$this->param; $front=Db::name( ...
- dedecms手机网站内页上一篇/下一篇的翻页功能
修改文件include/arc.archives.class.php文件. 1.搜索 function GetPreNext($gtype='') 2.将这个函数的所有内容替换为 function G ...
- asp.net MVC实现文章的上一篇下一篇
由于这个东西的原理没有什么难的(只是实现的时候有少量的坑),故直接上代码以便查阅.另:本文给出的Action附送了点击量统计. public ActionResult SingleNews(int? ...
- asp.net MVC实现文章的“上一篇下一篇”
由于这个东西的原理没有什么难的(只是实现的时候有少量的坑),故直接上代码以便查阅.另:本文给出的Action附送了点击量统计. public ActionResult SingleNews(int? ...
随机推荐
- springboot+cfx实现webservice功能
一.开发服务端 1.新建工程 cfx-webservice ,最终的完整工程如下: pom.xml如下: <?xml version="1.0" encoding=" ...
- Spring boot自动设置包依赖,根本不用记,
maven有和多依赖包,每次搭建都很麻烦,其实IDE ,有个小技巧,就是如图所示,你给需要的技术,加入进去,自动就会生成包和相关依赖,根本无需自己配置
- SGU 271 Book Pile (双端队列)
题意:n,m,k,表示有一个长度为 n 的序列,有 m 个操作,操作有 2 种,第一种是 ADD 在前面添加一个串,第二种是把前 k 个进行翻转,问你最后的序列是什么样的. 析:很明显,如果直接模拟, ...
- 中国移动物联网平台数据转发 c# 控制台程序
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...
- POJ1274 The Perfect Stall
The Perfect Stall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25739 Accepted: 114 ...
- lca tarjin
这个算法 我个人认为是 遍历每一个点把它当成一些询问的最近祖先 1 2 3 4 5 6 low是并差集,vis是是否访问过,访问过为true,没有为false: 假设询问是(4,4),(4,5), ...
- [ 9.13 ]CF每日一题系列—— 340A GCD & LCM
Description: [ 着实比较羞愧,都想着去暴力,把算法(方法)也忘了] A只涂x,2x,3x……,B只涂y,2y,3y……问你A和B共同涂的墙的个数 Solution: 就是求x和y的lcm ...
- SRM484
又Orz了一发rng_58.. 250pt: 题意:给定一种兔子数:当S(x*x) = S(x)*S(x)时,x为兔子数,其中S(x)表示各个数位之和. 思路:本来想了一个复杂度很高的想法..然后想看 ...
- iOS 5 故事板进阶(1)
译自<iOS 5 by tutorials> 在上一章,你已经学习了故事板的基本用法.包括如何向故事板中添加 View Controller,通过 segues 切换 View Contr ...
- unigui回车代替TAB
unigui回车代替TAB 在业务系统中常常使用回车键(Enter)替代Tab键完成焦点跳转,在uniGUI下,可以不用代码,直接使用TUniForm的NavigateKeys进行设置: 其中Next ...