Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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 mvc 剃须刀更换的优点(@href)_Asp.net Mvc_Asp.net Mvc 3_Razor - Fatal编程技术网

Asp.net mvc 剃须刀更换的优点(@href)

Asp.net mvc 剃须刀更换的优点(@href),asp.net-mvc,asp.net-mvc-3,razor,Asp.net Mvc,Asp.net Mvc 3,Razor,在ASP.NET MVC的文档中说,当视图中有链接时,应该这样做 <a href="@href("~/SubPage")">Subpage</a>. 在这种情况下,或者在其他情况下(比如创建表单),为什么要使用razor引擎,而不是直接编写您想要的内容。我认为,在服务器端直接打印某些内容,让引擎生成它会更快。如果应用程序在子文件夹中运行,Razor@href将创建如下正确链接: www.myapp.com/subfolder/SubPage 如果您自己编写,您的链接将

在ASP.NET MVC的文档中说,当视图中有链接时,应该这样做

<a href="@href("~/SubPage")">Subpage</a>.

在这种情况下,或者在其他情况下(比如创建表单),为什么要使用razor引擎,而不是直接编写您想要的内容。我认为,在服务器端直接打印某些内容,让引擎生成它会更快。

如果应用程序在子文件夹中运行,Razor@href将创建如下正确链接:

www.myapp.com/subfolder/SubPage
如果您自己编写,您的链接将如下所示,并且无法工作:

www.myapp.com/SubPage
这是因为,
~
将被Razor替换为您的应用程序根。

我只是写


我无法实现任何负面回退

ActionLink
方法无法采用
HTML

您需要创建一个正常的

如果我将链接写在子文件夹中,或者应用程序不在子文件夹中,有什么好处吗?不,我不这么认为。但是你失去了灵活性——如果不搜索你写下子文件夹名称的整个项目,你永远无法更改子文件夹的名称。我强烈反对这样做。+1-这个小宝石(@href)很容易被许多开发人员忽略(当不使用@Html.ActionLink()时)。如果可以的话,我会给你一个双重投票:)如果你定义了自定义路由,这可能会破坏链接。例如,如果我有一个自定义路由
a/b/c
映射到
PageController
子页面
操作,并且我的链接href是
OtherPage
,浏览器将导航到
a/b/OtherPage
,尽管在这种情况下,预期目标可能是
Page/OtherPage
。这不仅仅是关于你的应用程序当前的编写方式,而是关于以一种自适应的方式编写每个应用程序,并且可以优雅地降级。这使得该应用程序更加便携,也更容易支持将来的更改。
www.myapp.com/SubPage
<a href="@Url.Action("ActionName", "ControllerName")">Link Text</a>.