2016-04-20 7 views
-2

asp.net MVCを使用してページごとに5つの記事をページ分割したいのですが、 どのようなコードを追加しますか?ここでasp.net mvcでページ設定を作成するには

私のコントローラ:ここ

using CBA.Models; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using CBA.ViewModels; 
using System.Data; 

namespace CBA.Controllers 
{ 
    public class EventController : Controller 
    { 
     private ModelEntities db = new ModelEntities(); 

     public ActionResult Index() 
     //public ActionResult Index(int page = 1, int pageSize 5) 
     { 
      EventDetailsViewModel eventDetail = new EventDetailsViewModel(); 
      MasterEvents events = new MasterEvents(); 

      eventDetail.Title = events.Title; 
      eventDetail.CreatedTime = events.CreatedTime; 
      eventDetail.Detail = events.DetailEvent; 
      eventDetail.CreatedBy = events.CreatedBy_Id; 
      eventDetail.Description = events.ShortDescription; 

      CBA.GetContent.GetContentSoapClient service = new CBA.GetContent.GetContentSoapClient(); 

      string[] Content = service.GetContentText("Events", DateTime.Now.ToString("MM-dd-yyyy"), clsEncrypt.EncodeTo64(DateTime.Now.ToString("MM-dd-yyyy"))); 
      if (Content[0] != null) 
      { 
       string id = Content[0]; 

       string ContentText; 

       if (Content[1].Length == 0 && Content[2].Length == 0 && Content[3].Length == 0) 
       { 
        ContentText = ""; 
       } 
       else 
       { 
        ContentText = "<div class=\"container\" #MARGIN-TOP# ><div class=\"row\"><div class=\"col-lg-10 col-lg-offset-1\">"; 
        ContentText += "<div class=\"col-lg-12\" style=\"text-align:center;\"><h1>" + Content[1] + "</h1></div>"; 
        ContentText += "<div class=\"col-lg-12\" style=\"text-align:center;\"><h2>" + Content[2] + "</h2></div>"; 
        ContentText += "<div class=\"col-lg-12\"><div class=\"form-group\">" + HttpUtility.HtmlDecode(Content[3]).Replace("src=\"/", "src=\"" + System.Configuration.ConfigurationManager.AppSettings["replaceURLImageSlider"] + "/") + "</div>"; 
        ContentText += "</div></div></div>"; 
       } 

       DataTable dtSlider = service.GetContentImageSlider(int.Parse(id), DateTime.Now.ToString("MM-dd-yyyy"), clsEncrypt.EncodeTo64(DateTime.Now.ToString("MM-dd-yyyy"))); 

       if (dtSlider.Rows.Count > 0) 
       { 

        string ContentSlider = "<div id=\"myCarousel\" class=\"carousel slide\"><ol class=\"carousel-indicators\">"; 

        for (int i = 0; i < dtSlider.Rows.Count; i++) 
        { 
         if (i == 0) 
         { 
          ContentSlider += "<li data-target=\"#myCarousel\" data-slide-to=\"" + i.ToString() + "\" class=\"active\"></li>"; 
         } 
         else 
         { 
          ContentSlider += "<li data-target=\"#myCarousel\" data-slide-to=\"" + i.ToString() + "\"></li>"; 
         } 
        } 

        ContentSlider += "</ol><div class=\"carousel-inner\">"; 

        for (int i = 0; i < dtSlider.Rows.Count; i++) 
        { 
         //dt.Columns.Add("ImageFile", typeof(string)); 
         //dt.Columns.Add("HeaderText", typeof(string)); 
         //dt.Columns.Add("ContentText", typeof(string)); 

         string img = dtSlider.Rows[i]["ImageFile"].ToString().Replace("..", System.Configuration.ConfigurationManager.AppSettings["replaceURLImageSlider"]); 

         if (i == 0) 
         { 
          ContentSlider += 
           "<div class=\"item active\" style=\"background:url('" + dtSlider.Rows[i]["ImageFile"].ToString().Replace("..", System.Configuration.ConfigurationManager.AppSettings["replaceURLImageSlider"]) + "') " 
           + "no-repeat center center; -webkit-background-size: cover; -moz-background-size: cover; " 
           + "-o-background-size: cover;background-size: cover;\">" 
            + "<div class=\"container\">" 
             + "<div class=\"carousel-caption\">" 
              + "<div class=\"col-lg-6\" style='width:260px;'>" 
               + "<h1>" + (string)dtSlider.Rows[i]["HeaderText"] + "</h1>" 
               + "<p class=\"scroll_bni\" style='width: 260px;'>" 
                + (string)dtSlider.Rows[i]["ContentText"] 
               + "</p>" 
              + "</div>" 
             + "</div>" 
            + "</div>" 
           + "</div>"; 
         } 
         else 
         { 
          ContentSlider += 
            "<div class=\"item\" style=\"background:url('" + dtSlider.Rows[i]["ImageFile"].ToString().Replace("..", System.Configuration.ConfigurationManager.AppSettings["replaceURLImageSlider"]) + "') " 
            + "no-repeat center center; -webkit-background-size: cover; -moz-background-size: cover; " 
            + "-o-background-size: cover;background-size: cover;\">" 
             + "<div class=\"container\">" 
              + "<div class=\"carousel-caption\">" 
               + "<div class=\"col-lg-6\" style='width:260px;'>" 
                + "<h1>" + (string)dtSlider.Rows[i]["HeaderText"] + "</h1>" 
                + "<p class=\"scroll_bni\" style='width: 260px;'>" 
                 + (string)dtSlider.Rows[i]["ContentText"] 
                + "</p>" 
               + "</div>" 
              + "</div>" 
             + "</div>" 
            + "</div>"; 
         } 
        } 

        ContentSlider += "</div><a class=\"left carousel-control\" href=\"#myCarousel\" data-slide=\"prev\"><span class=\"glyphicon glyphicon-chevron-left\"></span></a><a class=\"right carousel-control\" href=\"#myCarousel\" data-slide=\"next\"><span class=\"glyphicon glyphicon-chevron-right\"></span></a></div>"; 

        ViewBag.Carousel = ContentSlider; 
       } 
       else 
       { 
        ContentText = ContentText.Replace("#MARGIN-TOP#", "style=\"margin-top:60px;\""); 
       } 

       ContentText = ContentText.Replace("#MARGIN-TOP#", ""); 

       ViewBag.Content = ContentText; 
      } 

      return View(db.MasterEvents.ToList()); 
     } 


     public ActionResult ViewEvents(int id) 
     { 
      MasterEvents MasterEvents = db.MasterEvents.Find(id); 
      ViewBag.data = id; 
      return View(); 
     } 
} 
} 

私の見解:ここ

@model IEnumerable<CBA.Models.MasterEvents> 

@{ 
    ViewBag.Title = "Recruitment - DDR Events"; 
    ViewBag.lnkEvents = "active"; 
    Layout = "~/Views/Shared/ContentFrontEnd.cshtml"; 
} 

<!-- Carousel 
    ================================================== --> 
@Html.Raw(ViewBag.Carousel) 
<!-- /.carousel --> 
<!-- Content 
    ================================================== --> 
@Html.Raw(ViewBag.Content) 
<!-- /.Content --> 


<!DOCTYPE html> 

<html> 
<head> 
    <title>Index</title> 
</head> 
<body> 
    <div class="container" style="background-color: white; border-radius: 0 0 15px 15px; margin-bottom: 40px;"> 
     <div class="row" style="margin-top: 30px;"> 
      <div class="col-lg-10 col-lg-offset-1"> 
       @foreach (var item in Model) 
       { 
        <div class="blog-post"> 
         <h2 class="blog-post-title">@Html.DisplayFor(modelItem => item.Title)</h2> 
         <p class="blog-post-meta"> 
          Created Time @Html.DisplayFor(modelItem => item.CreatedTime) 
          <!--by <a href="#">@Html.DisplayFor(modelItem => item.CreatedBy_Id)</a></p>--> 
          <h2 class="blog-post-title">@Html.DisplayFor(modelItem => item.ShortDescription)</h2> 
          <div class="readmore"> 
          <p> 
@{ 
          string parameterValue = ""; 
          if (item.DetailEvent.ToString().Length < 100) 
          { 
           parameterValue = item.DetailEvent; 
          } 
          else 
          { 
           parameterValue = item.DetailEvent.ToString().Substring(0, 200); 


          } 
          } 
@Html.Raw(parameterValue); 
           </p> 
          </div> 
          <br /> 
@Html.ActionLink("Read More..", "ViewEvents", "Event", new { id = 7 }, new { @class = "btn btn-primary btn-lg", style = "width:180px;" }) 

         </p> 
         <p class="blog-post-meta"> 
          Update Time @Html.DisplayFor(modelItem => item.UpdatedTime) 
         <p> 
         </div> 
       } 
       <nav> 
        <ul class="pager"> 
         <li><a href="#">Previous</a></li> 
         <li><a href="#">Next</a></li> 
        </ul> 
       </nav> 
      </div> 
     </div> 
    </div> 
</body> 
</html> 

私のモデル:

改ページを作成する方法
using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.ComponentModel; 
    using System.ComponentModel.DataAnnotations; 
    using System.Web; 

    namespace CBA.Models 
    { 
     public class MasterEvents 
     { 
      [Key] 
      [DisplayName("ID")] 
      [ScaffoldColumn(false)] 
      public int Id { get; set; } 

      [Required(ErrorMessage = "Required Events Title")] 
      [DisplayName("Title")] 
      [StringLength(250)] 
      public string Title { get; set; } 

      [Required(ErrorMessage = "Required Short Description")] 
      [DisplayName("Short Description")] 
      [StringLength(250)] 
      public string ShortDescription { get; set; } 

      [Required(ErrorMessage = "Required Details")] 
      [DisplayName("Detail Events")] 
      [StringLength(20)] 
      public string DetailEvent { get; set; } 

      [DisplayName("Created Time")] 
      public System.DateTime? CreatedTime { get; set; } 

      [DisplayName("Updated Time")] 
      public System.DateTime? UpdatedTime { get; set; } 

      [DisplayName("Created By")] 
      public int? CreatedBy_Id { get; set; } 

      [DisplayName("Updated By")] 
      public int? UpdatedBy_Id { get; set; } 


     } 
    } 

が、私は5件の記事で改ページを作りたいです1ページあたり..

+1

コードを書くようにお願いしていますか?スタックオーバーフローの仕組みではありません。あなたは何を試しましたか?どのページを表示するか、またはデータベースから正しい数の項目をどのようにクエリするかを示すためにコントローラに渡す必要があるものについて考えましたか?ページングがどのように実装されているかをオンラインで調べましたか? – mason

+0

これはかなり複雑なインデックスコントローラメソッドです。 –

+0

コントローラーにビルドしているすべてのHTMLをビューに移動する必要があります。 if-thenとforeachをそこに作ることができます。 –

答えて

0

任意のシステムでページネーションを行うには、コントローラメソッドで​​とcount per pageを使用し、ビジネスレイヤまたはデータアクセスレイヤのsearchメソッドにこれらの値を渡して、必要なコンテンツのみを取得できるようにします。

ので、本質的に:これは、あなたは、検索メソッドに渡すために使用できるコントローラで​​とcount per pageを渡すことができるようになりますIndex(int page = 1, int countPerPage = 5)

はこのような何かにIndexコントローラメソッドを変更します。

また、ページ番号を表示するUIを作成する必要があります。表示する必要のあるページ数を計算する1つの方法は、(検索方法の)検索にある項目の数をTOTALに戻してから、これをcountPerPageの値で割ることです。

これが正しい方向にあなたを押してくれることを願っています。ここで

さらに読書のためのいくつかのリソースは次のとおりです。

How do I do pagination in ASP.NET MVC?

http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application

あなたのより良いアイデアを与えるべきです。

関連する問題