【问题标题】:ASP MVC route all requests for a controller to the Index action?ASP MVC 将对控制器的所有请求路由到索引操作?
【发布时间】:2016-02-01 20:59:17
【问题描述】:

我有一个具有客户端路由的公共页面。我希望将所有Public/* 形式的网址路由到PublicController/Index。

我试过这个:

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

这适用于Public/someRoute 类型的网址,但不适用于Public/someRoute/secondRoute 或Public/someRoute/secondRoute/thirdRoute 等形式的网址。

【问题讨论】:

  • 不太清楚你在追求什么。但是,如果您正在考虑使用可变数量的 url 参数,请查看stackoverflow.com/questions/34573103/… ?
  • 如果您使用的是 MVC > 5,那么您可以在特定操作上定义属性路由以支持此类行为。
  • 您可以尝试使用 IIS 模块 URLRewrite 来重写 URL。

标签: asp.net asp.net-mvc


【解决方案1】:

你真的很亲密!这应该照顾你想要做的事情。

routes.MapRoute(
                name: "Public",
                url: "Public/{*clientRoute}",
                defaults: new { controller = "Public", action = "Index"}
            );

请注意 URL 参数中的星号,这告诉它充当“包罗万象”的功能。现在,任何以 Public/ 开头的东西都将转到这个控制器/动作。另外,如果您不需要 id 参数,请不要为它指定默认值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2021-08-07
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 2016-11-26
    相关资源
    最近更新 更多