0

基本的に、通知リストを月ごとに分割する必要がある通知リストのページネーション システムを作成する必要があります。これは私の通知ビューモデルです:

public class IndexViewModel
{
    public string Template { get; set; }
    public DateTime Created { get; set; }
}

そして、これは対応するビューです:

 @model IEnumerable<IndexViewModel>
 @{
    ViewBag.Title = "List";
    Layout = "~/Views/Shared/_LayoutAdmin.cshtml";

    var now = DateTime.Now;
  }

<link href="@Url.Content("~/Resources/styles/Notifications/NotificationsPage.css")" rel="stylesheet" />

  @foreach (IndexViewModel item in Model)
  { 
    <div>
       @Html.Raw(item.Template)
    </div> 
  }

非常に簡単な解決策が必要です。どんなアイデアでも大歓迎です。

これは、ビューモデルを返すサービス メソッドです

public List<IndexViewModel> GetIndexViewModel(int? month, int? year )//(DateTime? entryDate)
    {
        //List<string> templates = GetRenderTemplates(true);

        //Tuple<template, Created, ImportanceId>
        List<Tuple<string, DateTime, int>> templates = GetTemplatesWithDateAndImportance(true);
        templates = templates.OrderBy(f => f.Item3).ThenByDescending(f => f.Item2).Select(f => f).ToList();

        if (month != null && year != null)
            templates = templates.Where(f => f.Item2.Month == month && f.Item2.Year == year).ToList();

        List<IndexViewModel> toRet = new List<IndexViewModel>();

        foreach (Tuple<string, DateTime, int> template in templates)
        {
            toRet.Add(new IndexViewModel() { 
                Template = template.Item1,  
                Created = template.Item2
            });
        }

        return toRet;
    }

これは私の行動です:

[ActionName("List")]
    public ActionResult UsersList(int? month, int? year)
    {
        List<IndexViewModel> responseModel = Service.GetIndexViewModel(month, year);                            

        return View(responseModel);
    }
4

1 に答える 1

0

これを行うことができます:

var filteredNotifications = Model.Where(x => x.Created.Month == selectedTime.Month && x.Created.Year == selectedTime.Year);

または(あなたがそれらがソートされていると確信している場合):

var filteredNotifications = Model.SkipWhile(x => x.Created.Month != selectedTime.Month || x.Created.Year != selectedTime.Year).TakeWhile(x => x.Created.Month == selectedTime.Month && x.Created.Year == selectedTime.Year);

の場合selectedTime、デフォルトの月 (目的の値が提供されていない場合はおそらく ) または選択された月 (目的の値が提供されている場合) になります。月の望ましい値は、おそらくルート値です。についても同様です。DateTimeselectedTime.Monthnow.MonthselectedTime.Year

prevTime.Monthまた、ルート値がand prevTime.Year(where var prevTime = selectedTime.AddMonths(-1)) またはnextTime.Monthand nextTime.Year(where )の同じページにリンクすることで、次の月と前の月につながるリンクを持つこともできますvar nextTime = selectedTime.AddMonths(1)

于 2013-08-06T09:12:59.987 に答える