3

我有三个特定的路线:

    routes.MapRoute(
       "Home Page",
       "", 
       new { controller = "Home", action = "Index" } 
       );

    routes.MapRoute(
       "Admin Section",
       "AdminSection/{action}/{id}",
       new { controller = "AdminSection", action = "Index", id = UrlParameter.Optional }
       );

    routes.MapRoute(
       "Listings",
       "{controller}/{action}/{id}",
       new { controller = "Listings", action = "Index", id = UrlParameter.Optional }
       );

基本上,前两条路线按计划工作,但是,我希望将不在路线中的所有内容重定向到listings控制器。

我对路由仍然很陌生,过去一个小时一直在尝试用谷歌搜索,但没有任何运气——我确切地知道这里发生了什么,但是,我不知道如何解决它。

我使用了 RouteDebugger,我可以看到它正在访问路由,但是问题是,Listings如果未指定控制器,它只会转到控制器 - 但是,显然总会有一些东西。

我尝试了几种不同的组合——我认为我通过删除{controller}URL 的一部分并仍然定义默认值来赢得胜利,但是,我运气不佳。

有谁知道我需要做什么?

4

3 回答 3

4

这个怎么样:

routes.MapRoute("Listings", "{action}/{id}", 
        new { controller = "Listings", action = "Index", id = UrlParameter.Optional });

site.com/test :

它会去action: test, controller: listing,id = blank

在此处输入图像描述

于 2011-09-23T05:05:17.477 回答
3

编辑:据我了解,您想要一条包罗万象的路线。

http://richarddingwall.name/2008/08/09/three-common-aspnet-mvc-url-routing-issues/

routes.MapRoute("Listings", "{*url}",
    new { controller = "Listings", action = "Index" }
);

原来的:

我目前无法对此进行测试,但是

routes.MapRoute(
   "Listings",
   "{anythingOtherThanController}/{action}/{id}",
   new { controller = "Listings", action = "Index", id = UrlParameter.Optional }
   );

这应该有效。

在您的列表控制器中,只需接受一个字符串参数“anythingOtherThanController”,它就会绑定到它。

这里的主要问题是 /some/action 将被映射到与 /another/action 相同的操作。所以我不确定你想在这里做什么:)

于 2011-09-23T04:53:03.187 回答
1

提供默认路由并提供控制器名称作为列表控制器。将此路由映射保留在所有映射的底部。

 routes.MapRoute(
   "Default",
   "{controller}/{action}/{id}",
   new { controller = "Listings", action = "Index", id = UrlParameter.Optional }
   );

对不起,我把序列混在一起了。

于 2011-09-23T04:53:10.183 回答