0

定义了一条路线:

routes.MapRoute(
                name: "SearchRoute",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Search", 
                action = "Index", id = UrlParameter.Optional }

索引方法:

public ActionResult Index(int? id, SearchViewModel model)
  1. 我浏览到http://xxx.xxx.xxx.xxx/Search并且我的 Index 操作在我的 SearchController 上被击中,很好。
  2. 我浏览到http://xxx.xxx.xxx.xxx/Search/1并收到 404 错误。
  3. 我浏览到http://xxx.xxx.xxx.xxx/Search/Index/1,好的。

我宁愿使用上面的 2 而不必输入/Index/1. 如何?

4

2 回答 2

0

路由有优先级,即:您首先定义的路由很重要。尝试以下操作:

routes.MapRoute(
                name: "SearchRoute",
                url: "Search/{id}",
                defaults: new { controller = "Search", 
                action = "Index", id = UrlParameter.Optional }

routes.MapRoute(
                name: "DefaultRoute",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", 
                action = "Index", id = UrlParameter.Optional }
于 2013-09-01T20:09:20.020 回答
0

您可以像这样创建路线:

routes.MapRoute(
    name: "SearchRoute",
    url: "{controller}/{id}",
    defaults: new { controller = "Search", action = "Index", id = UrlParameter.Optional }
);

它只会以Index动作为目标,但听起来像你想要的。

于 2013-09-01T20:10:29.057 回答