Я пытаюсь определить более эффективный способ передачи большого количества параметров в действие моего контроллера.Я пытался взглянуть на похожие вопросы, но они, похоже, не давали реального объяснения тому, что я уже реализовал.
В качестве примера у меня есть простая сгенерированная CRUD-программа, которая реализует пакет PagedList.Эта программа CRUD должна иметь несколько фильтров (10+).Ранее я передавал параметры через URL.
Простой пример:
// GET: Action/rows
[HttpGet]
public async Task<ActionResult> Index(int? page, string currentrowId, string rowId)
{
if (rowId != null)
{
page = 1;
}
else
{
rowId = currentRowId;
}
var data = from s in db.tblrows
where s.rowId.ToString().Contains(rowId)
select s;
int pageSize = 10;
int pageNumber = (page ?? 1);
ViewBag.Page = page;
ViewBag.currentrowId = rowId;
return View(await data.ToPagedListAsync(pageNumber, pageSize));
}
Затем, на мой взгляд, я сохраняю свои параметры, передавая их через URL в каждом представлении CRUD,Например, в моем представлении индекса я могу открыть элемент в представлении редактирования, используя следующее:
@Html.ActionLink("Edit", "Edit", new { id = item.rowId, page = ViewBag.Page, currentrowId = ViewBag.currentrowId }, new { @class = "btn btn-success btn-sm" })
В представлении редактирования у меня есть аналогичный код, который поддерживает текущий параметр, так что когда пользователь возвращается кИнтерфейс CRUD, их параметры не повреждены.
Этот способ отлично работает для нескольких параметров, но для многих он кажется чрезвычайно утомительным.Я подумал о создании модели для моих параметров поиска и передаче ее как части моей ViewModel, но это тоже не показалось очень эффективным, если учесть, что для этого потребуется.
Буду признателен за любую документацию или предложения о лучшем способе.
РЕДАКТИРОВАТЬ: Поскольку это MVC, и я использую метод действия GET, я не могу передать объект в метод.