Что эквивалентно странице .ResolveUrl в ASP.NET MVC?

Что такое эквивалент страницы .ResolveUrl в ASP.NET MVC, доступный в контроллере?

Ответ 1

Url.Content:

ASPX:

<link rel="stylesheet" href="<%= Url.Content("~/Content/style.css") %>" type="text/css" />

Бритва:

<link rel="stylesheet" href="@Url.Content("~/Content/style.css")" type="text/css" />

Ответ 2

Это должно делать то, что вы ищете...

System.Web.VirtualPathUtility.ToAbsolute("~/")

Ответ 3

Вот несколько способов решения пути, который использует этот оператор корневого приложения (~)

Чтобы вызвать любой метод с встроенным кодом на странице asp.net, этот метод либо должен быть показан как переменная экземпляра для текущего объекта, либо доступен как статический/общий метод.

Типичная страница MVC дает нам доступ к довольно многим из них в качестве свойств через WebViewPage. Вы когда-нибудь задавались вопросом, когда вы печатаете @ViewData, вы получаете магическое подключение к ViewData? Это потому, что вы попали в свойство, выставленное на странице MVC, на которой вы находитесь.

Поэтому для вызова этих методов мы не обязательно ссылаемся на тип, который они представляют, но на свойство экземпляра, которое их предоставляет.

Мы можем вызвать вышеупомянутые методы экземпляра, подобные этому (соответственно):

href="@Url.Content("~/index.html")" 
href="@Server.MapPath("~/index.html")" 
href="@Href("~/index.html")" 

Мы можем сделать это, чтобы вызвать общий метод, который не нуждается в экземпляре:

href="@VirtualPathUtility.ToAbsolute("~/index.html")"

AFAIK, страница MVC автоматически не создает экземпляр ничего из пространства имен System.Web.UI, из которого наследуется ResolveUrl. Если по какой-то причине вы действительно хотели использовать этот конкретный метод, вы могли бы просто обновить элемент управления и использовать методы, которые он предоставляет, но я бы рекомендовал против него.

@Code
    Dim newControl As New System.Web.UI.Control
    Dim resolvedUrl = newControl.ResolveUrl("~/index.html")
End Code
href="@resolvedUrl" 

Чтобы все сказанное, я бы рекомендовал использовать @Url.Content, поскольку он лучше всего подходит для парадигм MVC

Ответ 5

Вам больше не нужно делать это в Razor v2.0/ASP.NET MVC 4.

Просто используйте "~" на странице бритвы, и он разрешит это для вас.

<link rel="stylesheet" href="~/Content/style.css" type="text/css" />

Источник

Ответ 6

Server.MapPath() //returna full path

или

url.content()

Ответ 7

попробуйте использовать Server.MapPath().