Разрешить виртуальный путь в MVC

Привет,

У меня есть такой адрес: ~/Content/Files/AdImages/20/20_thumb.jpeg, мне нужно это решить. Это было сделано в ASP.net с помощью Control.ResolveUrl().

Согласно этой статье http://stephenwalther.com/blog/archive/2009/02/18/asp.net-mvc-tip-47-ndash-using-resolveurl-in-an-html.aspx, я должен что-то использовать как это:

urlHelper.Content ("~ / Content / Files / AdImages / 20 / 20_thumb.jpeg")

Это, однако, возвращает следующий URL: /Content/Files/AdImages/20/20_thumb.jpeg, даже если я не в корне решения (содержимое помещается в корень)?

Как я могу решить это?

обратите внимание, что это из расширения вспомогательного html.

// SnowJim

2 ответа

Да, ~ не работает в asp.net так же, как в mvc. Вместо этого, лучший вариант, кажется, заменить ~ на:

Request.Url.GetLeftPart(UriPartial.Authority)

Так что вместо:

urlHelper.Content("~/Content/Files/AdImages/20/20_thumb.jpeg")

использование

urlHelper.Content( Request.Url.GetLeftPart(UriPartial.Authority) + "/Content/Files/AdImages/20/20_thumb.jpeg")

Работа ~ заключается в том, чтобы всегда разрешать корень, чтобы вы видели правильное поведение. Если вы хотите, чтобы это было относительно пути, по которому вы находитесь в данный момент, тогда ваш путь не должен начинаться с ~ или /

Другие вопросы по тегам