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

时间:2009-05-14 18:03:55

标签: .net asp.net-mvc html-helper actionlink routelink

我认为标题几乎总结了它:

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

即。您何时使用Html.RouteLink(),何时在视图中使用Html.ActionLink()

4 个答案:

答案 0 :(得分:76)

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

ActionLink将根据操作名称生成使用第一个匹配路径的操作的URL。

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

答案 1 :(得分:66)

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

Html.ActionLink()可以让您快速生成ActionLinks,并可以基本控制渲染的内容。如果你没有太多路线,或者不需要提供过多或过于具体的信息,那么这项工作就可以了。

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

按照您的意愿使用它们,因为它们对您的项目有意义。他们中的任何一个都没有上升/下降(其他一些人没有匹配......)。

答案 2 :(得分:19)

除了这里给出的其他答案之外,RouteLink更快一些,并且因为你改变了路由表而无法匹配错误的路由。

答案 3 :(得分:12)

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