MVC3自定义路由以隐藏动作

时间:2011-10-17 06:40:29

标签: asp.net-mvc-3 asp.net-mvc-routing

我有一个路由问题,我一直在修补但是试图让它工作没有成功。

基本上,我在global.asax文件中有默认路由,并且我有以下控制器,其中包含以下操作:

Controller = People 行动=指数&搜索

当您访问“人物”页面时,会出现一个搜索框,当您运行搜索时,表格获取为:

http://mysite/people/search?filter=a&searchType=IdentityCode&searchOption=StartsWith

我想要做的是,将搜索放在网址中,所以它看起来像这样:

http://mysite/people?filter=a&searchtype=IdentityCode&searchOption=StartsWith

但仍然会执行搜索操作。

这一切都可能吗?

1 个答案:

答案 0 :(得分:1)

您可以通过制作索引并搜索相同的方法来实现。

public ActionResult Index(string filter, string searchType, string searchOption)
{

   IList<Person> people;

   if (String.IsNullOrEmpty(filter)) {
       people = peopleRepo.GetAll(); // Get all the people, or none - whatever you prefer on the index page
   }
   else
   {
       people = peopleRepo.Search(filter, searchType, searchOption);
   }

   Return View("index", people);

}

显然我已经取得了许可证解释你的代码,但我希望你能得到这个想法。