ASP.NET MVC 有一个分页控件-PageList,能够很好地实现分页效果。
1.Model
public class VirtualMachine
{
public int Id { set; get; }
public string HostName { set; get; }
public string IPAddress { set; get; }
public string Owner { set; get; }
public string State { set; get; }
public DateTime ExpiredDate { set; get; }
public string IsAzure { set; get; }
}
2.数据源
public class CloudResourceDatasource
{
public static IEnumerable<VirtualMachine> GetAll()
{
return new List<VirtualMachine>
{
new VirtualMachine{ Id = 1, HostName = "Azure", IPAddress = "192.168.21.1", Owner = "justin", State = "ON", ExpiredDate = DateTime.Now, IsAzure = "true"},
new VirtualMachine{ Id = 2, HostName = "Azure", IPAddress = "192.168.21.1", Owner = "justin", State = "ON", ExpiredDate = DateTime.Now, IsAzure = "true"},
new VirtualMachine{ Id = 3, HostName = "Azure", IPAddress = "192.168.21.1", Owner = "justin", State = "ON", ExpiredDate = DateTime.Now, IsAzure = "true"},
new VirtualMachine{ Id = 4, HostName = "Azure", IPAddress = "192.168.21.1", Owner = "justin", State = "ON", ExpiredDate = DateTime.Now, IsAzure = "true"},
new VirtualMachine{ Id = 5, HostName = "Azure", IPAddress = "192.168.21.1", Owner = "justin", State = "ON", ExpiredDate = DateTime.Now, IsAzure = "true"},
new VirtualMachine{ Id = 6, HostName = "Azure", IPAddress = "192.168.21.1", Owner = "justin", State = "ON", ExpiredDate = DateTime.Now, IsAzure = "true"},
new VirtualMachine{ Id = 7, HostName = "Azure", IPAddress = "192.168.21.1", Owner = "justin", State = "ON", ExpiredDate = DateTime.Now, IsAzure = "true"},
new VirtualMachine{ Id = 8, HostName = "Azure", IPAddress = "192.168.21.1", Owner = "justin", State = "ON", ExpiredDate = DateTime.Now, IsAzure = "true"},
new VirtualMachine{ Id = 9, HostName = "Azure", IPAddress = "192.168.21.1", Owner = "justin", State = "ON", ExpiredDate = DateTime.Now, IsAzure = "true"},
new VirtualMachine{ Id = 10, HostName = "Azure", IPAddress = "192.168.21.1", Owner = "justin", State = "ON", ExpiredDate = DateTime.Now, IsAzure = "true"},
new VirtualMachine{ Id = 11, HostName = "Azure", IPAddress = "192.168.21.1", Owner = "justin", State = "ON", ExpiredDate = DateTime.Now, IsAzure = "true"},
new VirtualMachine{ Id = 12, HostName = "Azure", IPAddress = "192.168.21.1", Owner = "justin", State = "ON", ExpiredDate = DateTime.Now, IsAzure = "true"},
new VirtualMachine{ Id = 13, HostName = "Azure", IPAddress = "192.168.21.1", Owner = "justin", State = "ON", ExpiredDate = DateTime.Now, IsAzure = "true"},
new VirtualMachine{ Id = 14, HostName = "Azure", IPAddress = "192.168.21.1", Owner = "justin", State = "ON", ExpiredDate = DateTime.Now, IsAzure = "true"}
};
}
}
3.控制器
public ActionResult Index(int page = 1)
{
const int pagesize = 3;
var data = CloudResourceDatasource.GetAll()
.OrderBy(p => p.Id).ToPagedList(page, pagesize);
return View(data);
}
4.页面
@{
ViewBag.Title = "Home Page";
}
@using PagedList
@using PagedList.Mvc
@model IEnumerable<MvcPagerDemo.Models.VirtualMachine>
<table>
@foreach (var item in Model)
{
<tr>
<td>@item.Id</td>
<td>@item.IPAddress</td>
</tr>
}
</table>
@Html.PagedListPager((IPagedList)Model,page=>Url.Action("Index",new {page}))
5.分页效果
注意:这个效果需要一个pagelist.css,如果通过nuget添加会自动添加进去,否则需要手动添加。