【问题标题】:Partial View Search Result returns no results in paging部分视图搜索结果在分页中不返回结果
【发布时间】:2015-11-07 08:43:38
【问题描述】:

我有两个用于搜索结果的部分视图,它们使用引导程序的选项卡窗格显示在父视图中。

这是我的父视图:(仅限Index.cshtml 相关代码)

<form class="form">
    @using (Html.BeginForm("Index", "Home", FormMethod.Get))
    {  
        <div class=" form-group">
            @Html.TextBox("search", ViewBag.CurrentFilter as string, 
                new { @placeholder = "Enter class number", @class = "form-control" })
        </div>
        <div class="form-group">
            <input class="btn btn-success" type="submit" value="Search" id="btnclick" />
        </div>
    }
</form> 
<div class="tab-content col-xs-12">
    <div class="tab-pane fade in active" id="info">
        @if (Model.student_info.Count() != 0)
        {
            @Html.Partial("_studentinfo")
        }
        else
        {
            <h4 style="padding:5px;">No records found.</h4>
        }
    </div>
    <div class="tab-pane fade" id="grades">
        @if (Model.gradeperterm.Count() != 0)
        {
            @Html.Partial("_gradeterm")
        }
        else
        {
            <h4 style="padding:5px;">No records found.</h4>
        }
    </div>
</div>

然后对于我的每一个局部视图,我都放置了 pagedlistpager

@if (Model.student_info.Count > 1)
{ 
    @Html.PagedListPager(Model.student_info, 
        page =>Url.Action("Index", 
            new { page = Page, currentFilter = ViewBag.CurrentFilter}))
}

那么我的控制器是这样的:

Guid query = new Guid();
query = (from b in db.school 
         where b.class_nr == search 
         select b.class_id).FirstOrDefault();

if (search != null)
{
    page = 1;
}
else 
{
    search = currentfilter;
}

ViewBag.CurrentFilter = search;

int pageSize = 5;
int pageNumber = (page ?? 1);
var smodel = new schoolmodel
{
    student_info = db.student_info.Where(x => x.class_id == query)
        .OrderBy(x => x.recorded_at_date_time)
        .ToPagedList(pageNumber, pageSize),

    gradeperterm = db.gradeperterm.Where(x => x.class_id == query)
         .OrderBy(x => x.term)
         .ToPagedList(pageNumber, pageSize)
};

return View(patmodel);

当我搜索时,它会成功显示每个选项卡窗格的前五页,但是,当我单击下一页时,它会显示“未找到结果”,但我的搜索字符串和当前过滤器不为空,如我的网址。我怎样才能使它工作?我对 mvc 完全陌生。答案将不胜感激。谢谢。

【问题讨论】:

    标签: asp.net-mvc partial-views pagedlist


    【解决方案1】:

    部分视图类似于 Razor 的片段,因此您需要使用如下所示为部分视图传递数据

    @Html.Partial("_studentinfo",Model)

    或者,如果你需要做一些预处理,你可以使用一个子动作,这样它就可以有自己的控制器动作,如图所示

    @Html.Action("controller","action",new { id = 1, otherRouteParam = "pagekey" })

    并让该动作在所述预处理之后呈现局部视图

    public PartialViewResult Action(int id, string otherRouteParam){
       //Additional Processing like Get a PagedList Slice of Data
       return PartialView("_studentinfo", result);
    }
    

    【讨论】:

    • 我试过@Html.Partial("_studentinfo",Model) 但我仍然得到相同的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多