我有这样的行动:
@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中定义的路由,因此以某种方式匹配模式吗?
由于
答案 0 :(得分:2)
为什么链接中不显示“详细信息”?
因为您在Global.asax中定义的路由模式是{Id}
,其中id必须是整数。所以,回答你的问题,是的,Html.ActionLink
助手尊重你在Global.asax中定义的路线。
如果您希望能够传递与details
不同的操作,则必须修改您的模式。例如:{action}/{id}
。显然,控制器部分也是如此。
如果您不希望评估按Global.asax中的路由定义顺序进行,则可以使用Html.RouteLink
来指定路由名称。这样您就可以定位特定路线。当然,你传递的论点必须与这条路线保持一致。
答案 1 :(得分:2)
答案是“是”,ActionLink在呈现URL时会考虑定义的路线。