Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 为什么要使用HTML.ActionLink而不是公共锚_Asp.net_Asp.net Mvc_Razor Pages - Fatal编程技术网

Asp.net 为什么要使用HTML.ActionLink而不是公共锚

Asp.net 为什么要使用HTML.ActionLink而不是公共锚,asp.net,asp.net-mvc,razor-pages,Asp.net,Asp.net Mvc,Razor Pages,下面的句子生成指向ASP.net MVC控制器中的操作的HTML锚: @Html.ActionLink("Text", "Action", "Controller") 但下面的代码也做了同样的事情: <A href="~\Controller\Action">Text</a> 第二个选项对我来说似乎更好,因为它不太复杂,而且它允许事件将复杂的HTML元素放入其中 那么我为什么要用第一个而不是第二个呢?你可以用这个: <a href="@Url.Action(

下面的句子生成指向ASP.net MVC控制器中的操作的HTML锚:

@Html.ActionLink("Text", "Action", "Controller")
但下面的代码也做了同样的事情:

<A href="~\Controller\Action">Text</a>

第二个选项对我来说似乎更好,因为它不太复杂,而且它允许事件将复杂的HTML元素放入其中

那么我为什么要用第一个而不是第二个呢?

你可以用这个:

<a href="@Url.Action("Action","Controller")">Text or Inner html</a>

此代码允许您将HTML放入其中

类似这样的代码:“~\Controller\Action”如果使用自定义路由,可能会导致问题。
例如,您希望在URL中的控制器前面使用操作名称。

在我看来,第一个看起来更好,因为您可以在特定字段中添加路由参数和HtmlAttribute。容易阅读。比如说

@Html.ActionLink("LinkText", "Action", "Controller", new { id = item.ID }, new htmlAttributes {})

ActionLink()
方法将始终根据其参数生成正确的url(如果您希望
中包含html元素,则通常使用
,在这种情况下,第二个选项是否会生成正确的url?