MVC - 为什么要使用ActionLink的而不是硬编码的链接?(MVC - why use A

2019-10-21 07:50发布

微软MVC,剃须刀时,Visual Studio 2013

我可以创建使用这两种方法2链接。 是否有使用Html.ActionLink方法,因为我看不到任何什么好处?

<a href="/Review/MyReviews">My Reviews</a>

@Html.ActionLink(linkText:="My Reviews", controllerName:="Review", actionName:="MyReviews")

谢谢,约翰

Answer 1:

是。 它的使用方法非常有用Url.Action()的URL生成和Html.ActionLink()因为这将确保产生从动作控制器的名称正确相对URL生成锚标记。

在某些情况下,当应用在内蒙古目录托管我们的CSS 样式表js文件不加载因错误的URL。

考虑情况下,您正在使用的锚标记与你在第一页的方法和View是像查看嵌套子目录- >首页- >局部模板- > _Index.cshtml。

现在,如果你写的锚标记是这样的:

<a href="/About/Index">About</a>

现在我们说去一个目录当年关于控制器和索引操作,但在当前情况下正确的URL将是:

<a href="../About/Index">About</a>

而下面将确保地址写锚标记生成正确的:

<a href="@Url.Action("Index","About")">About</a>

要么:

Html.ActionLink(linkText:="About", controllerName:="About", actionName:="Index")

使用纯硬编码的网址会导致想在这个问题SO帖子 。

OP面临的问题Ajax调用没有得到,因为错误的URL的行动,并使用@Url.Action()帮助解决了这个问题,因为它可以确保该URL生成正确的。

你也应该阅读本内容丰富的文章,使更多清晰的认识



Answer 2:

与@Ehsan完全同意:ActionLink的助手可以移动应用程序的Web服务器(相对路径)时,为您节省了很多麻烦。

此外,ActionLink的比较好,因为如果你后者改变你的控制器或者动作名称,编译器应该警告你。

在另一边,“A HREF ...”是不能够看到错误发生运行时错误之前。



Answer 3:

+1尝试使用MVC佣工,就像你可以因为你可以利用生成URL:

1)利用ASP.NET MVC的传出URL生成从路线模板。 所以,即使你发生怎样的改变/版本的路径模板通过助手生成的URL能够正确重新生成这些URL。 因此,链接不破。

2)他们有很好的重载这对提高可读性和更清洁,以及例如,使用匿名类型路由值和HTML特性等,而不是丑陋concatinations

3)您可以在脚本中包括他们也可以作为服务器标记,以便产生相同的链接跨越基于URL生成方案。



文章来源: MVC - why use ActionLink instead of hard coding the link?