Asp.net mvc 由

Asp.net mvc 由,asp.net-mvc,routes,Asp.net Mvc,Routes,我在我的网站上有几个以“筛选…”开头的操作,我的表单使用这些操作来更新部分视图 我想简单地路由它们,而不必匹配每一个。我尝试了一些正则表达式,但没有得到任何结果 例如: data/filterbydate -> should be Controller: Data - Action: filterbydate data/filterbyproject -> should be Controller: Data - Action: filterbyproject

我在我的网站上有几个以“筛选…”开头的操作,我的表单使用这些操作来更新部分视图

我想简单地路由它们,而不必匹配每一个。我尝试了一些正则表达式,但没有得到任何结果

例如:

    data/filterbydate -> should be Controller: Data - Action: filterbydate
    data/filterbyproject -> should be Controller: Data - Action: filterbyproject
    data/filterbyname -> should be Controller: Data - Action: filterbyname
...
事实上,如果在RouteConfig的底部没有以下规则,我就不需要具体的路由

url: "Data/{nodeAlias}"
这迫使我为数据控制器中的每个操作实现路由

我尝试过像
url:“Data/Filter{*type}”
或:

 route = routes.MapRoute(
            name: "DataWithAlias",
            url: "Data/{nodeAlias}",
            defaults: new { action = "Detail", controller = "Content", nodeAlias = "" },
            constraints: new { nodeAlias = "^(?!filter$).*$"}
        );
但是没有成功

我正在搜索:

  • 在一个路由中映射所有筛选操作的方法
  • 或者从url中排除任何开始的内容:“Data/{nodeAlias}” 带过滤器*
  • 或者是一种避免路由这些筛选器操作的方法 他们的URL已经正确构建,以正确的 控制员/行动

以下内容满足了我在约束中使用正则表达式的要求:

        route = routes.MapRoute(
          name: "DataFilter",
          url: "Data/{action}",
          defaults: new { action = "Index", controller = "Data"},
          constraints: new {action = "^filter.*|^GetPDF.*" }
      );
        // A route value determines the culture of the current thread
        route.RouteHandler = new MultiCultureMvcRouteHandler();