Решение 1
При использовании темы ASP.NET, вы можете обойти эту проблему. Тем не менее, это также означает, что вам придется реструктурировать то, как ваши файлы.
Просто добавьте папку App_Themes и папку под ней с именем темы («По умолчанию» будет хорошим выбором для сайта с 1 темой).
Добавить название темы в <pages>
элемент в web.config:
<pages theme="Default">
Затем поместите файл CSS внутри папки темы. УДАЛИТЕ любой код, который вы используете для ссылки на файл css, потому что ASP.NET автоматически подключит его ко всем вашим страницам.
Если вы хотите больше контролировать страницы, на которые вы добавляете css, вы можете просто добавить тему в директиву @page на страницах или сделать это в коде на своей базовой странице в событии Page_PreInit, а не в Интернете .config файл.
Теперь, если вы также поместить изображения ниже папку темы, на них можно ссылаться, как это с помощью CSS:
background-image: url('Images/Buttons/login-sprite.gif');
В этом примере предполагается, файл изображения находится в месте
[AppFolder]/App_Themes/Default/Images/Buttons/login-sprite.gif
и ваш файл CSS находится в месте
[AppFolder]/App_Themes/Default/Styles.css
Solution 2
Если вы предпочитаете не менять ваши файлы, вы также можете динамически генерировать файл или читать его в строку и заменять маркер по вашему выбору (пример # MyImageFile #) фактическим URL-адресом после вызова ResolveUrl, чтобы сделать уверен, что это правильно.
Вы можете поместить код, такие как это в файле с именем Styles.aspx:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'This is a wrapper for the CSS file that allows us to inject
'any image URLs directly into the file, accounting for any relative
'path differences between different environments.
Dim FileName As String = Server.MapPath("Styles.css")
Dim sr As StreamReader
Dim contents As String
sr = File.OpenText(FileName)
Try
contents = sr.ReadToEnd
Finally
sr.Close()
End Try
'Now that we have the contents of the file, run our
'function on it to replace the tokens
contents = Me.ProcessConfigurationTokens(contents)
Response.Clear()
Response.AddHeader("content-type", "text/css")
Response.Write(contents)
Response.End()
End Sub
А затем изменить ссылки на страницы из styles.css в Styles.aspx.
С этим подходом наблюдается удар по производительности, но его можно было бы компенсировать с помощью кеширования. Тем не менее, я думаю, что использование Themes - лучший подход, потому что он решает проблему, используя только одну структуру без написания дополнительного кода.
Не отвечает на мой вопрос. В примере есть только одно место, которое мне нужно изменить значение: -P. –