Преимущества замены бритвы (@href)

В документации ASP.NET MVC говорится, что вы должны сделать что-то подобное, когда есть ссылка в представлении

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

Бритвенный двигатель заменяет @href("~/SubPage") на /Subpage.

В чем преимущество этого сделать вместо этого

<a href="/SubPage">Subpage</a>.

В таких случаях, как это и в других (например, создание формы), зачем использовать движок бритвы вместо того, чтобы писать прямо то, что вы хотите. Я думаю, что быстрее на стороне сервера, чтобы напечатать что-то прямо, что позволяет движку его генерировать.

Ответы

Ответ 1

Если ваше приложение работает во вложенной папке, Razor @href создаст правильную ссылку следующим образом:

www.myapp.com/subfolder/SubPage

Если вы напишете его самостоятельно, ваша ссылка будет такой и не будет работать:

www.myapp.com/SubPage

Thats, потому что ~ будет заменен вашим корнем приложения Razor.

Ответ 2

Метод ActionLink не может принимать HTML.

Вам нужно сделать обычный тег <a> и использовать @Url.Action(...) для href.

<a href="@Url.Action("ActionName", "ControllerName")">Link Text</a>.

Ответ 3

Я просто пишу

<a href="SubPage">Subpage</a>

Я не могу реализовать какой-либо отрицательный запас