2015-12-29 3 views
1

У меня есть несколько страниц администрирования, где пользователю представлена ​​сетка элементов. В сетках есть панель поиска над ними, где пользователь может фильтровать по нескольким полям.Как сделать этот код контроллера проще?

Когда пользователь нажимает на поиск, я делаю сообщение, которое затем перенаправляется на страницу индекса. Я уверен, что приведенный ниже код может быть выполнен лучше (в некоторых сценариях у меня есть до 20 полей фильтра).

[HttpPost] 
    public ActionResult Filter(MySearchModel model) 
    { 
     var searchParams = new 
     { 
      fielda = model.FieldA, 
      fieldb = model.FieldB, 
      fieldc = model.FieldC 
     }; 

     return RedirectToAction("Index", searchParams); 
    } 

public ActionResult Index(MySearchModel model) 
{ 
//do filtering, return view etc in here 
} 

ответ

1

Вместо того, чтобы выполнять пост с переадресацией, просто изменить первоначальную форму, чтобы использовать метод GET и целевой «Index» действие непосредственно.

using(Html.BeginForm("Index", null, FormMethod.Get)) 
{ 
    ... 
} 

Таким образом, вы можете исключить сквозное соединение HTTP и полностью избавиться от действия «Фильтр».

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