路由约束asp.net mvc

时间:2014-01-28 13:07:37

标签: asp.net asp.net-mvc asp.net-mvc-4

这是我的路线配置:

routes.MapRoute(
            name: "AdsCategories",
            url: "Ads/{key}",
            defaults: new { controller = "Ads", action = "Index" },
            //constraints: new { key =  },
            namespaces: new string[] { "Vprok.Controllers" }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            namespaces: new string[] { "Vprok.Controllers"}
        );

如何创建约束" AdsCategories"? 我需要使用默认路由,如果在控制器中操作"广告" == {key}。

2 个答案:

答案 0 :(得分:9)

所以基本上如果{key}是现有操作,您希望它由默认路由处理,而不是在Index控制器上使用Ads操作?

为了实现这一点,您可以列出关键约束中的所有可能操作:

routes.MapRoute(
    name: "AdsCategories",
    url: "Ads/{key}",
    defaults: new { controller = "Ads", action = "Index" },
    constraints: new { key = @"^create|update|delete" },
    namespaces: new string[] { "Vprok.Controllers" }
);

在此示例中,只有当网址不是AdsCategoriesads/createads/update时,ads/delete路由才会匹配。例如,ads/foobar将匹配。

答案 1 :(得分:1)

取出以下代码:

routes.MapRoute(
            name: "AdsCategories",
            url: "Ads/{key}",
            defaults: new { controller = "Ads", action = "Index" },
            //constraints: new { key =  },
            namespaces: new string[] { "Vprok.Controllers" }
        );

在广告控制器上创建索引actionresult并为其添加id参数! DONE