ASP.NET MVC中的RouteLink和ActionLink有什么区别?


120

我认为标题几乎可以概括为:

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

即何时使用Html.RouteLink()以及何时Html.ActionLink()在视图中使用?

Answers:


78

动作和路线不必具有1:1关系。

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

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


+1撰写出色的博客文章。真的很方便。并表明存在太多的可能性。微软专家应该只执行最快的。但是人们宁愿使用花哨的λ最慢的λ。
罗伯特·科里特尼克

嘿,谢谢,但是我认为链接没有断开。请您再给我提供链接谢谢
user1006544 2011-11-23

5
我们可以举个例子吗?
MaylorTaylor 2014年

67

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

Html.ActionLink()使您可以轻松快速地生成ActionLink,并可以基本控制呈现的内容。如果您没有太多的路线,或者不需要提供太多或太具体的信息,那么就可以完成工作。

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

随心所欲使用它们,并使它们对您的项目有意义。它们中的任何一个实际上都没有上行/下行(这是其他任何一个都不匹配的...)。



12

RouteLink采用路由的名称,因此,如果您的路由名称可靠且相当唯一,那么即使要使用的操作名称发生更改,该名称也将相同。ActionLink链接到特定控制器的特定动作。在我的观点中,我会同时使用这两种方式,具体取决于我要使用的链接类型!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.