0

我对我的路由图进行了更改,现在如下:

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

这是不再起作用的操作链接:

@Html.ActionLink("Category", "CategoryList", "Category")

当我单击此操作链接时,没有任何反应,网址http://localhost:62394/与页面重新加载保持相同。太奇怪了

当我检查 html 时,它看起来像这样:

<a href="">Category</a>

任何帮助或提示都非常感谢!

注意:如果我从路由中删除标题,它会起作用......

4

1 回答 1

1

这是因为您有 2 个可选参数,所以路由引擎不知道将第三个参数映射到哪一个。感觉标题将用于特定路线而不是通用路线。如果是这样,为什么不为其创建一个特定的路由并将其从通用后备路由中删除呢?

像这样的东西:

routes.MapRoute(
            name: "Title",
            url: "Category-List/{title}",
            defaults: new { controller = "Category", action = "CategoryList", title = UrlParameter.Optional }
        );
routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
于 2013-05-18T15:17:26.087 回答