提供没有唯一参数名称的URL

时间:2012-04-04 21:14:02

标签: asp.net-mvc-3 url maproute

有谁知道如何为多个参数名称的同一区域内的多个控制器提供路由映射?

我要求为每个具有唯一参数名称的控制器提供不带参数名称(仅限值)的URL(以避免歧义)

这可能吗?

我想在URL中获取此输出:

/myAreaName1/mycontrollerName1/Edit/12/23
/myAreaName1/mycontrollerName2/Edit/someValue1/23

使用类似的东西:

context.MapRoute(
                "mapRouteName1",
                "myAreaName1/{controller}/{action}/{customID}/{sustomID2}",
                new { controller = "mycontrollerName1", action = "Index", customID= UrlParameter.Optional, sustomID2= UrlParameter.Optional },
                new string[] { "Project.Areas.SomeArea.Controllers" }
            );

context.MapRoute(
                "mapRouteName1",
                "myAreaName1/{controller}/{action}/{customValue}/{sustomID3}",
                new { controller = "mycontrollerName2", action = "Index", customValue= UrlParameter.Optional, sustomID3= UrlParameter.Optional },
                new string[] { "Project.Areas.SomeArea.Controllers" }
            );

1 个答案:

答案 0 :(得分:1)

您需要使用RegEx路线(我在此使用了一篇文章来指导我如何创建它...工作得很好)。我过去曾经用过这类东西。我建议你不要这样做因为它可能导致错误。如果您根据所有数字添加正则表达式规则以及如果parm具有非数字值则使用其他路由...然后用户输入该位置的所有数字会怎么样?我认为这将导致很难发现错误。

想要更好的东西吗?企业是否坚持要您使用这些网址?您还可以考虑使用URL重写规则将其写入MVC框架之外的另一个路由,然后将路由更改为更独特。

相关问题