C#MVCの効率的なhtml方法
4673 ワード
まずhtmlの拡張方法を作成します.この方法は万能で、プロジェクトで直接使用することができます.
何が拡張方法なのか、拡張方法がどのように使われているのか分からない場合は、私の別の文章を見てみましょう.
http://blog.csdn.net/only_yu_yy/article/details/78509091
このメソッドをビューで呼び出します
最後に、コントローラに次のコードを追加します.
これにより、ページング効果を簡単に実現できます.
//
// Helper
public static HtmlString ShowPageNavigate(this HtmlHelper htmlHelper, int currentPage, int pageSize, int totalCount)
{
var redirectTo = htmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath;
pageSize = pageSize == 0 ? 3 : pageSize;
var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //
var output = new StringBuilder();
if (totalPages > 1)
{
//if (currentPage != 1)
{//
output.AppendFormat("トップページ ", redirectTo, pageSize);
}
if (currentPage > 1)
{//
output.AppendFormat(" のページ ", redirectTo, currentPage - 1, pageSize);
}
else
{
// output.Append(" ");
}
output.Append(" ");
int currint = 5;
for (int i = 0; i <= 10; i++)
{// 10 , 5 , 5
if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages)
{
if (currint == i)
{//
//output.Append(string.Format("[{0}]", currentPage));
output.AppendFormat("{3} ", redirectTo, currentPage, pageSize, currentPage);
}
else
{//
output.AppendFormat("{3} ", redirectTo, currentPage + i - currint, pageSize, currentPage + i - currint);
}
}
output.Append(" ");
}
if (currentPage < totalPages)
{//
output.AppendFormat(" のページ ", redirectTo, currentPage + 1, pageSize);
}
else
{
//output.Append(" ");
}
output.Append(" ");
if (currentPage != totalPages)
{
output.AppendFormat(" のページ ", redirectTo, totalPages, pageSize);
}
output.Append(" ");
}
output.AppendFormat(" {0} / {1} ", currentPage, totalPages);//
return new HtmlString(output.ToString());
}
何が拡張方法なのか、拡張方法がどのように使われているのか分からない場合は、私の別の文章を見てみましょう.
http://blog.csdn.net/only_yu_yy/article/details/78509091
このメソッドをビューで呼び出します
@Html.ShowPageNavigate((int)ViewData["pageIndex"], (int)ViewData["pageSize"], (int)ViewData["totalCount"])
最後に、コントローラに次のコードを追加します.
DataModelContainer dbContainer = new DataModelContainer();
// GET: User
public ActionResult Index(int pageIndex = 1,int pageSize=2)
{
ViewData["pageIndex"] = pageIndex;
ViewData["pageSize"] = pageSize;
ViewData["totalCount"] = dbContainer.User.Count();
ViewData.Model = dbContainer.User.OrderBy(u=>u.Id).Skip(pageSize*(pageIndex-1)).Take(pageSize).AsEnumerable();
return View();
}
これにより、ページング効果を簡単に実現できます.