【问题标题】:ASPNET MVC - Route all URL subfolders to a single controllerASPNET MVC - 将所有 URL 子文件夹路由到单个控制器
【发布时间】:2019-06-01 21:57:20
【问题描述】:

我正在将网站移植到 MVC5 并且需要确保 URL 结构相同。旧网站有以下网址:

https://www.example.com/collections/products
https://www.example.com/products/product1-name
https://www.example.com/products/product2-name

我有一个 ProductsController 用于第一个 URL,这很好用:

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

但是,我还没有找到将所有 URL 请求(例如 /products/product1-name、/products/product2-name)映射到单个控制器的方法。我看了全能,但没有任何成功。

我可以为 product1-name、product2-name 等创建单独的控制器,但是有数千种产品。本质上,product1-name、product2-name 是将从数据库返回的产品 ID。

【问题讨论】:

  • 通过添加另一个参数来解决这个问题: routes.MapRoute( name: "ProductItem", url: "products/{name}", defaults: new { controller = "ProductItem", name = UrlParameter.可选,action = "Index", id = UrlParameter.Optional });

标签: asp.net-mvc


【解决方案1】:
routes.MapRoute(
            name: "Products",
            url: "collections/products/{action}/{productName}",
            defaults: new { controller = "Products", 
                            action = "GetProductionByName",
                            id = UrlParameter.Optional }
        );

您将看起来像 collections/products/GetProductionByName/productname 只需放置或写入产品名称并进行查询以按名称查找产品,然后显示您要在视图中显示的列.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 2013-09-21
    • 1970-01-01
    相关资源
    最近更新 更多