1

我有这样的动作:

@Html.ActionLink(dinner.Title, "Details", new { id=dinner.DinnerID }) 

和这样定义的路线:

routes.MapRoute(
                    "PrettyDetails",
                    "{Id}",
                        new { controller = "Dinners", action = "Details" },
                        new { Id = @"\d+" }
                    );

动作链接呈现<a href="/234">My Dinner</a>

为什么链接中不显示"Details"?是因为它知道 Global.asax 中定义的路由,因此以某种方式匹配模式吗?

谢谢

4

2 回答 2

2

答案是“是”,ActionLink 在呈现 URL 时会考虑定义的路由。

于 2012-04-11T17:33:53.373 回答
2

为什么链接中不显示“详细信息”?

因为您在 Global.asax 中定义的路由模式是{Id}id 必须是整数。因此,要回答您的问题,是的,Html.ActionLink助手尊重您在 Global.asax 中定义的路线。

如果您希望能够传递不同的操作details,则必须修改您的模式。例如像这样:{action}/{id}。显然,控制器部分也是如此。

Html.RouteLink如果您不希望按照 Global.asax 中路由定义的顺序进行评估,您可以使用which 允许您指定路由名称。这样您就可以定位特定路线。当然,您传递的参数必须与这条路线保持一致。

于 2012-04-11T17:32:21.527 回答