Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq asp.net mvc 3中的PagedList在1之后不向任何页面返回任何内容_Linq_Asp.net Mvc 3_Pagedlist - Fatal编程技术网

Linq asp.net mvc 3中的PagedList在1之后不向任何页面返回任何内容

Linq asp.net mvc 3中的PagedList在1之后不向任何页面返回任何内容,linq,asp.net-mvc-3,pagedlist,Linq,Asp.net Mvc 3,Pagedlist,我正在使用搜索操作结果中的分页列表来分页我的结果。它返回日期范围或类别内的事件。返回的第一页可以,但第二页从未有任何结果。当我检查断点时,查询返回的结果超过7个。这是我的搜索控制器 public ActionResult Search(DateTime? q, DateTime? e, int? EventCategoryId, Event model) { var SearchEvents = db.Events .OrderByDesce

我正在使用搜索操作结果中的分页列表来分页我的结果。它返回日期范围或类别内的事件。返回的第一页可以,但第二页从未有任何结果。当我检查断点时,查询返回的结果超过7个。这是我的搜索控制器

   public ActionResult Search(DateTime? q, DateTime? e, int? EventCategoryId, Event model)
    {
        var SearchEvents = db.Events
            .OrderByDescending(r => r.start)
            .Where(r => 
                r.start >= q && 
                r.end <= e && 
                r.EventCategoryId == EventCategoryId || 
                r.start >= q || 
                r.EventCategoryId == EventCategoryId);

        ViewBag.QValue = model.start;

        ViewBag.EValue = model.end;

        ViewBag.ListValue = model.EventCategoryId;

        ViewBag.EventCategoryId = new SelectList(db.EventsCategories, "Id", "Name", ViewBag.ListValue);

        var pageIndex = model.Page ?? 1;
        var results = SearchEvents.ToPagedList(pageIndex, 4);
        ViewBag.Names = results;

        return View(results);
        }
    }
public ActionResult搜索(DateTime?q、DateTime?e、int?EventCategoryId、事件模型)
{
var SearchEvents=db.Events
.OrderByDescending(r=>r.start)
。其中(r=>
r、 开始>=q&&
r、 结束=q | |
r、 EventCategoryId==EventCategoryId);
ViewBag.QValue=model.start;
ViewBag.EValue=model.end;
ViewBag.ListValue=model.EventCategoryId;
ViewBag.EventCategoryId=新选择列表(db.EventsCategories,“Id”,“Name”,ViewBag.ListValue);
var pageIndex=模型。第1页;
var结果=SearchEvents.ToPagedList(pageIndex,4);
ViewBag.Names=结果;
返回视图(结果);
}
}
这是我的观点

@model IPagedList<RealKaac.Models.Event>

@{
    ViewBag.Title = "SearchResults";
}

@using PagedList;
@using PagedList.Mvc;
@using System.Linq;

<div id="Content">
    <h2>SearchResults</h2>
    <div id="EventSearch">
    @using (Html.BeginForm("Search", "Event"))
    {
        <p class="EventPar">Start Date: </p>
        <input id ="datepicker" type ="text" name ="q" value="@ViewBag.QValue" />
            <p class="EventPar">End Date: </p>
        <input id ="datepickerend" type ="text" name ="e" value ="@ViewBag.EValue"  />
        <p class="EventPar">Category:</p>
        @Html.DropDownList("EventCategoryId")
        <input id="EventButton" style="padding:1px;" type ="submit" name ="Search" value = "Search" />
    }
    </div>

    <div id="IndexEvents">
    @foreach (var item in Model)
    {
        <div class ="event">   
            <div class="eventname">
                @*<p>@Html.DisplayFor(modelItem => item.Name)</p>    *@
            </div>
            <div class = "etitle">
                 <p>@Html.DisplayFor(modelItem => item.title)</p>
            </div>
            <div class="eventsdesc">
                <p>@Html.DisplayFor(modelItem => item.EventDescription)</p>
            </div>
            <ul class ="datelink">
                <li style="margin-right:120px;">This event starts on the
                    @Html.DisplayFor(modelItem => item.start) and ends on the
                    @Html.DisplayFor(modelItem => item.end)</li>
                <li>Click @Html.DisplayFor(modelItem => item.EventWebsite) for more info.</li>
            </ul>
        </div>
    }
    </div>
</div>

@Html.PagedListPager((IPagedList)ViewBag.Names, page => Url.Action("Search", new { page }))
@model IPagedList
@{
ViewBag.Title=“搜索结果”;
}
@使用页面列表;
@使用PagedList.Mvc;
@使用System.Linq;
搜索结果
@使用(Html.BeginForm(“搜索”、“事件”))
{

开始日期:

结束日期:

类别:

@Html.DropDownList(“EventCategoryId”) } @foreach(模型中的var项目) { @* @Html.DisplayFor(modelItem=>item.Name)

*@ @DisplayFor(modeleItem=>item.title)

@DisplayFor(modelItem=>item.EventDescription)

    此事件从 @DisplayFor(modelItem=>item.start)并在 @DisplayFor(modelItem=>item.end)
  • 单击@Html.DisplayFor(modeleItem=>item.EventWebsite)了解更多信息
} @PagedListPager((IPagedList)ViewBag.Names,page=>Url.Action(“搜索”,新建{page}))
我在这方面还很新,所以我可能遗漏了一些小的东西,任何建议都非常感谢


谢谢。

Url.Action只有一个参数(页面),与控制器的方法不匹配。它不提供对任何其他参数(如开始/结束日期)的访问。因此,接下来4个事件的第二个“页面”查询可能不起作用。如果您创建了一个具有必要属性的SearchModel,那么您应该能够轻松地将值从一个页面发送到下一个页面

public ActionResult Search(SearchModel search) { 
    //... (your search code)
    // ... then, before returning the View,
    ViewBag.SearchParameters = search;
    return View(results);
其中SearchModel具有如下属性:

然后,你可以:

 @Html.PagedListPager((IPagedList)ViewBag.Names, page => Url.Action("Search", new SearchModel { search = ViewBag.SearchParameters }))
或者您可以只使用命名参数:

@Html.PagedListPager((IPagedList)ViewBag.Names, page => Url.Action("Search", new { page = page, q = ViewBag.QValue, /* ... etc. */ }))

谢谢,这就解决了!今天晚上读了一些书之后,我意识到应该为所有东西制作视图模型。你活着,你学习!
@Html.PagedListPager((IPagedList)ViewBag.Names, page => Url.Action("Search", new { page = page, q = ViewBag.QValue, /* ... etc. */ }))