文章内容

2017/5/23 10:56:52,作 者: 黄兵

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

在文章中增加上一篇下一篇不仅可以增加爬虫抓取到的几率,而且在系列文章中是读者方便阅读。

下面使用asp.net mvc实现文章的“上一篇下一篇”的功能,大家可以参考一下:

[ChildActionOnly]
public ActionResult PreNextBlog(int Id)
{
if (Id == 0)
return RedirectToAction("Index");
//用pre和next变量分别存放上一篇文章和下一篇文章的id号
int pre = 0, next = 0, i = 0, j;
//计算总记录数
using(UnitOfWork uow=new UnitOfWork())
{
var BlogItem = uow.BlogRepository.GetAll();
int num = BlogItem.Count();
int[] a = new int[num];
var query = BlogItem.Select(x => x.Id);
foreach(var item in query)
{
a[i] = Convert.ToInt32(item);
i++;
}

//循环,获取上一篇和下一篇文章的ID号,分别放入变量pre和next中
for (j = 0; j < num; j++)
{
if (a[j] == Id)
{
if (j != 0) pre = a[j - 1];
if (j != num - 1) next = a[j + 1];
}
}
//获取上一篇文章的标题
if (pre == 0)
{
ViewBag.preTitle = "没有了";
ViewBag.pre = Id;
}
else
{
ViewBag.preTitle = BlogItem.Where(x => x.Id == pre).Single().Title;
ViewBag.pre = pre;
}
//获取下一篇文章的标题
if (next == 0)
{
ViewBag.nextTitle = "没有了";
ViewBag.next = Id;
}
else
{
ViewBag.nextTitle = BlogItem.Where(x => x.Id == next).Single().Title;
ViewBag.next = next;
}
}
return PartialView();
}

之后看一下前端的代码如下:

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

本文参考:

denny的学习专栏 - MVC3学习:实现文章上一篇下一篇链接

分享到:

发表评论

评论列表