В одном представлении у меня будет три набора выгружаемых данных. Что значит для каждой модели у меня будет
- Объекты
- Индекс страницы
- Размер страницы
Моя первоначальная мысль была, например:
public class PagedModel<T> where T:class
{
public IList<T> Objects { get; set; }
public int ModelPageIndex { get; set; }
public int ModelPageSize { get; set; }
}
Затем, имея модель, которая должна быть добавлена к действию, например:
public class TypesViewModel
{
public PagedModel<ObjectA> Types1 { get; set; }
public PagedModel<ObjectB> Typed2 { get; set; }
public PagedModel<ObjectC> Types3 { get; set; }
}
Так что если у меня, например, представление Index наследуется от типа:
System.Web.Mvc.ViewPage<uk.co.andrewrea.forum.Web.Models.TypesViewModel>
Теперь мой начальный метод aciton для индекса просто:
public ActionResult Index()
{
var forDisplayPurposes = new TypesViewModel();
return View(forDisplayPurposes);
}
Если я затем захочу перейти на страницу, именно здесь я пытаюсь решить, какое действие предпринять. Допустим, я выбрал следующую страницу модели страниц Types2. Как должно выглядеть это действие для возврата нового представления, показывающего вторую страницу Types2 PageModel
Я думал, возможно, дублировать действие, но использовать его с POST
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(TypesViewModel model)
{
return View(model);
}
Это хороший способ приблизиться к этому. Я понимаю, что всегда есть сессия, но мне было просто интересно, как такая вещь достигается в настоящее время там. Если какие-то лучшие методы были взаимно приняты и прочее.
Итак, одна страница с несколькими страничными моделями. Как сохранить данные для каждого, используя модель оболочки. Какой путь вы должны пройти в модели и каким образом вы должны пейджировать данные, то есть Форма сообщения
Наконец, я видел, что маршруты принимают это во внимание, т.е.
{controller}/{action}/{id}/{pageindex}/{pagesize}
но это касается только одной модели, и я не хочу повторять значения pageize и pageindex для числа моделей, которые у меня есть внутри модели оболочки.
Спасибо за ваше время !!
Andrew