Итак, я начал использовать синтаксис <%: Url.Content(~/site/blah) %>
как стандарт для CSS, JScript и URL-адресов изображений - действительно решает множество проблем; и это, по крайней мере, совместимо с страницами WebForms и Razor (не все мои разработчики будут делать Razor, и все же они все равно будут работать на этой платформе, которую я выпустил).
Тем не менее, для того, что я делаю в данный момент, я мог бы действительно сделать способ, чтобы взять относительный Url, написанный на странице Razor, и во время выполнения разрешить его правильному файлу на стороне сервера, прежде чем включать его обратно в абсолютный URL для клиента. Url.Content
ничего не делает с относительными Urls.
Итак, в основном, я хочу либо эквивалент ResolveUrl
, либо ResolveClientUrl
на уровне Razor.
Я хотел бы, чтобы это позволило использовать пути доступа (и более толерантные к переименованию) в некоторых моих MVC-представлениях, которые могут быть несколькими папками дальше от корня, и чья папка содержимого будет легче выражаться как относительная путь - поэтому я мог бы:
folder\folder\views\shared\layout.cshtml
и folder\folder\content\site.css
(Я также предположил использование страницы макета, чтобы отразить проблемы, которые решаются ResolveUrl и ресайзинг, которые делают WebForms)
Используя Url.Content
как есть, мне нужно будет указать полный путь:
Url.Content("~/folder/folder/content/site.css")
Но мне хотелось бы
Url.Content("../../site.css")
И эта работа, конечно, независимо от того, сколько путей существует в текущем маршруте запроса.
Конечно, я могу заставить это работать в WebForms, если я удалю вызов Url.Content и просто полагаюсь на перезагрузку URL.
Есть ли какой-либо эквивалент в Razor?