1

这是我的路由:

routes.MapRoute(null,
    "shelves/{id1}/products/{action}/{id2}",
    new { controller = "Products", action = "List", id1 = "", id2 = ""});

这个想法是你可以做这样的事情:

http://server/shelves/23/products/edit/14

并且能够编辑货架 23 上的产品 14。使用Route Debugger检查它,路径与路由匹配,但是当我尝试在 Route Debugger 关闭的情况下导航到它时,它向我显示 HTTP 404 错误。有谁知道为什么会这样?

4

1 回答 1

3

好吧,对于初学者来说,这 id1="" 行将是有问题的,因为您不能使一些不是最后的可选内容。

我刚刚在我的系统上尝试过,它工作得很好。

这是路线:

routes.MapRoute(
    "shelf-route",
    "shelves/{id1}/products/{action}/{id2}",
    new { controller = "Products", action = "List", id2 = "" }
);

这是控制器:

public class ProductsController : Controller
{
    public string List(string id1, string id2)
    {
        return String.Format("ID1 = {0}, ID2 = {1}", id1, id2);
    }
}

我试过这样的网址:

http://localhost:14314/shelves/23/products/list/14
http://localhost:14314/shelves/23/products

他们工作得很好。

当您尝试其中包含“编辑”的 URL 时,您是否记得进行编辑操作?如果没有编辑操作,您将收到 404。

于 2010-01-16T01:49:05.383 回答