【发布时间】:2009-05-14 18:03:54
【问题描述】:
我认为标题几乎概括了它:
ASP.NET MVC 中RouteLink() 和ActionLink() 有什么区别?
即你什么时候使用Html.RouteLink(),什么时候在你的视图中使用Html.ActionLink()?
【问题讨论】:
标签: .net asp.net-mvc html-helper actionlink routelink
我认为标题几乎概括了它:
ASP.NET MVC 中RouteLink() 和ActionLink() 有什么区别?
即你什么时候使用Html.RouteLink(),什么时候在你的视图中使用Html.ActionLink()?
【问题讨论】:
标签: .net asp.net-mvc html-helper actionlink routelink
Action 和 Routes 不必是一对一的关系。
ActionLink 将生成 URL 以使用按操作名称的第一个匹配路由到达操作。
RouteLink 将生成一个指向由名称或路由值确定的特定路由的 URL。
【讨论】:
其实这两种方法的输出是一样的,只是生成方式略有不同:
Html.ActionLink() 可以轻松快速地生成 ActionLink,并且可以让您对渲染的内容进行基本控制。如果您没有太多路线,或者不需要提供太多或太具体的信息,这将可以很好地完成工作。
Html.RouteLink() 方法采用的参数略有不同,因此您可以更详细地控制事情的处理方式。当我的场景稍微复杂一点,或者当我有更详细的路线结构时,我倾向于使用这种方法。
一个例子是最近的一个项目,我(为了灵活性)宁愿有几条不同的路线,它们都很简单,而不是一条允许大量信息的复杂路线。因此,我最终为同一个控制器创建了四到五个路由,所有路由都指定了默认操作。我主要使用RouteLink版本,因为当我指定路由名称时,会自动输入默认参数。
按照您的喜好使用它们,并且它们对您的项目有意义。它们中的任何一个都没有任何优点/缺点(其他一些不匹配......)。
【讨论】:
除了此处给出的其他答案之外,RouteLink 速度更快一些,并且永远无法匹配错误的路由,因为您更改了路由表。
【讨论】:
RouteLink 采用路由的名称,因此如果您的路由名称可靠且相当独特,那么即使要使用的操作名称发生更改,这也是相同的。 ActionLink 链接到特定控制器的特定操作。我在我的观点中同时使用这两种方法,具体取决于我所追求的链接类型!
【讨论】: