在MVC中设置自定义路由时,我遇到了很多问题
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"SearchList",
"Search/{city}/{cat}", // URL
new
{
controller = "Search",
action = "Index"
}, // URL Defaults
new { id = @"\d+" }
);
SearchController
public ActionResult Index(string city, string search, string cat, int? pageNo, string ratio, string fee, string curr, int? id)
此方法用于搜索包含过滤器的特定项目。
我尝试了很多排列组合,但没有成功。
我需要以下类型的结果:
http://localhost/Search/City/Category
http://localhost/Search/City
http://localhost/Search/Category
http://localhost/Search/Curr
我正在接受"一种公共行动方法' pune'在控制器上没有找到App.Web.Controllers.SearchController'。"输入以下网址时出错:
http://localhost:5355/Search/pune/Preschool
答案 0 :(得分:1)
您的搜索确实不应该使用路由级参数,而应该使用查询字符串。这就是它的用途,查询 ing。
使用路由参数进行搜索时会遇到问题,因为使用MVC路由时,只能将最后一个路由参数设为可选。其余的都是必需的。
使用看起来像这样的网址会更好:
http://localhost:5355/Search?City=pune&Category=Preschool
@theDarse对你看到的异常消息是正确的。在路由配置中的某个位置,您具有默认路由。确保在 SearchList
路径后定义。
答案 1 :(得分:0)
为什么不考虑使用Area,这可能更容易,但我不确定你是否可以这样做,我从来没有这样做过。