Настройка моего проекта: MVC4, MvcPaging (PagedList), с областями. Этот ответ ориентирован на эту настройку.
Краткий ответ:
При настройке AjaxOptions для пейджера убедитесь, что вы правильно указали область.
new AjaxOptions { UpdateTargetId = "grid-list" , OnBegin = "beginPaging",
OnSuccess = "successPaging", OnFailure = "failurePaging"}
, new { area = "Admin", controller = "MyController", action = "Index"}
Длинный ответ:
В примере PagedList показано, как перейти к области и выполнить разбиение на страницы внутри области, но они не показывают пример того, как использовать разбиение по страницам с частичным просмотром.
Пример проекта имеет следующий код (взятый из _AjaxEmployeeList.cshtml):
}, new AjaxOptions
{
UpdateTargetId = "grid-list",
OnBegin = "beginPaging",
OnSuccess = "successPaging",
OnFailure = "failurePaging"
},
new { controller = "Home", action = "Index",
employee_name = ViewData["employee_name"] }))
В примере PagedList используется встроенная таблица внутри foreach, поэтому у вас нет проблем / конфликтов с этой настройкой.
@using MvcPaging
@model IPagedList<MvcPagingDemo.Models.Employee>
<table class="table table-bordered table-hover">
@foreach (var item in Model)
{
<tr>
<td>@item.ID</td>
</tr>
}
</table>
При рефакторинге этой таблицы в частичное представление (для инкапсуляции логики (и для работы с разбиением по страницам) я начал получать сообщение «Частичное представление '_MyPartialView' не было найдено или механизм просмотра не поддерживает найденные местоположения» strong >
@using MvcPaging
@using MyProject.Models
@model IPagedList<MyProject.Models.MyModel>
foreach (var item in Model)
{
<div data-task-id="@item.MyModel_ID.ToString()">
@Html.Partial("_Detail", item)
</div>
}
Я прошел через ряд изменений, пытаясь принудительно включить область в вызов Html.Partial (), в том числе:
Изменение способа обработки маршрутизации, что не сработало.
Как установить маршрут по умолчанию (в область ) в MVC
Полное определение пути к частичному представлению, которое действительно работало, но было некрасиво.
mvc3 - использование частичных представлений в другой области
Исследование загрузки частичных представлений показало мне как механизм MVC обрабатывает запросы. Это отправило меня обратно к модификации Ajax Pager, чтобы отправлять область с каждым запросом. Я попытался использовать синтаксис, аналогичный Html.ActionLink. (Это не сработало / не сработало)
@Html.ActionLink("Admin", "Index", "Admin", new { area = "Admin" }, null)
Это не сработало, поэтому, если все остальное не удалось, я отразил шаблон для настройки контроллера, что привело нас к следующему:
new AjaxOptions { UpdateTargetId = "grid-list" , OnBegin = "beginPaging",
OnSuccess = "successPaging", OnFailure = "failurePaging"}
, new { area = "Admin", controller = "MyController", action = "Index"}
Мой личный урок из этого: C #! = Razor! = Javascript. Каждый из них работает немного по-своему, и вы должны быть уверены, что знаете, на каком языке написана ваша строка.
person
Lodlaiden
schedule
27.11.2013