Разрешить виртуальный путь в 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")
Работа ~ заключается в том, чтобы всегда разрешать корень, чтобы вы видели правильное поведение. Если вы хотите, чтобы это было относительно пути, по которому вы находитесь в данный момент, тогда ваш путь не должен начинаться с ~ или /