2015-08-14 3 views
1

У меня есть два частичных представления для результатов поиска, которые отображаются внутри родительского представления, используя панель загрузочного бутстрапа.Частичный просмотр Результат поиска не возвращает результатов в paging

это мой родитель мнение: (только 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); 

Когда я ищу, он отображает первые пять страниц для каждого t ab-pane успешно, однако, когда я нажимаю на следующей странице, он отображает «Нет результатов», но моя строка поиска и текущий фильтр не равны нулю, как показано в моем URL-адресе. Как я могу заставить его работать? Я совершенно не знаком с mvc. Ответы будут высоко оценены. Спасибо.

ответ

0

Частичного вид призван быть как фрагменты Razor так, Вам необходимо передать данные для частичного вида с использованием, как показано ниже

@Html.Partial("_studentinfo",Model)

или в качестве альтернативы, если вам нужно сделать некоторое количество предварительно -переработкой, вы могли бы использовать Child Action, так что он может иметь свой собственный контроллер действий, как показано

@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); 
} 
+0

Я попробовал @ Html.Partial («_ studentinfo», Model), но я все равно получаю тот же результат. – WebNewbie

 Смежные вопросы

  • Нет связанных вопросов^_^