背景介绍,这篇文章是的内容里,出现的back是 EF 对象(大家都懂!^0^)
这里解释下,ActionResult 大家都懂,返回给视图了。而传的参数:int? page ,经过楼主的思考,还是用了((*^__^*) 第一次用,之前只知道有这个东西)
但是这里遇见个问题,请大家指教了:当使用三元表达式的时候,就报错了,无法获得默认值。代码:Int32 n=page.HasValue?1:page.Value;这么久得不到值呢!
后就只能用if语句了!
当然当你看这篇文章的时候,你已经会了asp.net mvc了!下面的Linq语句就不解释了。Skip是跳过多少,Take是取多少条。当然还有下面的Lamda表达式也就不解释了。
业务说明:传进来 页数page ,每次获得15条数据 ,取得总条数和总页数和:Math.Ceiling 向上取整。后台代码如下:
1 //在线信息 2 public ActionResult AdminThing(int? page) 3 { 4 //获得数据 5 Int32 n = 1; 6 if (page.HasValue) 7 { n = page.Value; } 8 var querys = (from t in back.things orderby t.thingid where t.label == 1 select t).Skip(15 * (n - 1)).Take(15); 9 ViewBag.AdminThing = querys; 10 11 //获得页数 12 var count = back.things.Count(t => t.label == 1); 13 //取得总页数 14 int Allpage = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(count / 15.0))); 15 ViewBag.Allpage = Allpage; 16 17 18 return View(); 19 }
视图页面:
这里的视图是cshtml ,布局就不说了,可以看一些BootStrap的分页,都是很漂亮的。这里用的是a标签链接地址为:刚才的Action加不同的参数来请求数据。
<!--分页-->
<div style="float:right;">
<ul class="pagination">
@{
int allpage = ViewBag.Allpage;
<li><a href="AdminThing?page=1">«</a></li>
for (int i = 1; i <= allpage; i++)
{
<li><a href="AdminThing?page=@i">@i</a></li>
}
<li><a href="AdminThing?page=@allpage">»</a></li>
}
</ul>
</div>
总结:当有怎样的需求的时候,就怎样求得。后期开发将转型 Jquery-ajax来无刷新操作。