121

我认为标题几乎概括了它:

RouteLink()ActionLink()ASP.NET MVC有什么区别?

即你什么时候使用Html.RouteLink(),什么时候Html.ActionLink()在你的视图中使用?

4

4 回答 4

79

Action 和 Routes 不必是 1:1 的关系。

ActionLink 将生成 URL 以使用操作名称的第一个匹配路由到达操作。

RouteLink 将生成一个指向由名称或路由值确定的特定路由的 URL。

于 2009-05-14T18:11:24.050 回答
66

实际上,这两种方法的输出是相同的,但生成方式略有不同:

Html.ActionLink()可以轻松快速地生成 ActionLink,并且可以让您对渲染的内容进行基本控制。如果您没有太多路线,或者不需要提供太多或太具体的信息,这将很好地完成工作。

Html.RouteLink()方法采用略有不同的参数,因此可以让您更详细地控制事情的处理方式。当我的场景稍微复杂一点,或者当我有更详细的路线结构时,我倾向于使用这种方法。
一个例子是最近的一个项目,我(为了灵活性)宁愿有几条不同的路线,它们都很简单,而不是一条允许大量信息的复杂路线。因此,我最终为同一个控制器创建了四到五个路由,所有路由都指定了默认操作。我主要使用RouteLink版本,因为当我指定路由名称时,会自动输入默认参数。

随心所欲地使用它们,并且它们对您的项目有意义。它们中的任何一个都没有任何优点/缺点(其他一些不匹配......)。

于 2009-05-14T18:37:12.270 回答
19

除了此处给出的其他答案之外,RouteLink 更快一些,并且永远无法匹配错误的路由,因为您更改了路由表。

于 2009-05-14T18:45:02.923 回答
12

RouteLink 采用路线的名称,因此如果您的路线名称可靠且相当独特,那么即使要使用的操作名称发生更改,这也是相同的。ActionLink 链接到特定控制器的特定操作。我在我的观点中同时使用这两种方法,具体取决于我所追求的链接类型!

于 2009-05-14T18:10:44.737 回答