2015-12-29 27 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方法,直接瞄准“指数”行动。

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

这样可以消除HTTP往返并完全摆脱“过滤器”动作。