【问题标题】:How to ignore all characters after "controller/action" in an ASP.NET MVC route?如何在 ASP.NET MVC 路由中忽略“控制器/操作”之后的所有字符?
【发布时间】:2014-04-16 14:49:12
【问题描述】:

我希望我的 ASP.NET MVC4 应用程序只为特定页面提供基本 HTML 标记,然后我在客户端使用 knockout.js/history.js/AJAX 处理其他所有内容,包括初始页面加载。

因此,当有人引用 URL http://example.com/products/list/food/fruits 时,MVC 路由器应该简单地忽略“产品/列表”后面的所有内容,并将请求路由到 ProductsControllerList 操作。然后在客户端,我将处理其余部分并相应地加载请求的数据。

我在玩路由定义,尝试完全跳过“products/list”路由,还尝试添加“products/list/*”路由,但还没有成功。

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-4 url-routing


    【解决方案1】:

    您可以使用星号作为路径中最后一个变量的一部分。例如,在配置您的路线时:

    routes.MapRoute(
        "ProductRoute",
        "products/list/{*otherArgs}",
        new { controller = "Products", action = "List" });
    

    您可以在MSDN's Documentation“处理 URL 模式中的可变数量段”部分下了解更多关于路由的信息

    【讨论】:

      【解决方案2】:

      您需要创建自己的路线。

      这样的事情应该可以解决问题:

       routes.MapRoute("Products", "Products/{List}",
                  new {controller = "Products", action = "List"}
                  );
      

      注意:我不确定路由中是否需要其他参数。

      【讨论】:

        猜你喜欢
        • 2011-02-14
        • 1970-01-01
        • 1970-01-01
        • 2012-08-14
        • 2015-10-25
        • 2015-06-27
        • 2015-07-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多