Url.RouteUrl()& MVC3中的Url.Action()

时间:2012-02-20 08:04:23

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing

我正在我的cshtml页面中动态生成URL。 Url.RouteUrl()& Url.Action()?

我应该使用哪一个来生成网址&两者在实施方面有什么不同?

提前致谢。

2 个答案:

答案 0 :(得分:48)

RouteUrl根据路由名称生成了网址。如果您有多个具有相似参数的路由,Action方法可能选错了 - 它根据路由定义的顺序工作。当您的路线有可选参数时,可能会发生这种情况。

如果您想确保使用某个路由网址,则需要调用RouteUrl传递此路由名称。路线名称是唯一的,并清楚地标识路线。

另一个区别是Action是MVC特定的(它使用控制器和动作名称),而RouteUrl是通用的,并且可以在没有MVC的情况下使用(您可以在WebForms中使用路由)。 / p>

答案 1 :(得分:17)

Url.RouteUrl允许您按名称指定特定路线。这将强制该路线的使用。 Url.Action只会选择符合条件的第一条路线。