Тематика ASP.NET программно: пути к изображениям - PullRequest
0 голосов
/ 14 марта 2011

У нас есть многоязычный сайт, или чувствительный к культуре, и теперь некоторые из статического контента должны быть нацелены;для этого я использую темы, так как кажется самым простым способом достичь того, чего я хочу, но я не могу на всю жизнь заставить изображения подобрать.

I 'Я установил тему в code-behind и сначала подумал, что, может быть, в этом проблема, но при проверке похоже, что я делаю правильные вещи (настройка на Pre-Init).

Я ожидаючтобы иметь возможность ссылаться на изображения, используя относительные пути, где App_Themes/ThemeName/ автоматически разрешается, например:

<asp:Image runat="server" ImageUrl="images\image.jpg"/>

По какой-то причине, однако, изображение вообще не просматривается.

Это код, который у нас есть для установки темы (я уверен, что единственной действительно важной частью является Theme = CurrentSite.CultureName, который успешно применяется):

Private Sub SetTheme()
    Dim themesPath = Server.MapPath("~/App_Themes")
    If Directory.Exists(themesPath) Then
        Dim themePaths = Directory.GetDirectories(themesPath)
        Dim themePathInfo As DirectoryInfo
        For Each _path In themePaths
            themePathInfo = New DirectoryInfo(_path)
            If Not themePathInfo Is Nothing Then
                If themePathInfo.Name = CurrentSite.CultureName Then
                    Theme = CurrentSite.CultureName
                    Exit For
                End If
            End If
        Next
    End If
End Sub

В приведенном вышеcode, CurrentSite.CultureName будет именем языковой культуры (например, en-gb или nn-no), в котором имеется соответствующая папка темы, содержащая все необходимые ресурсы.

На страницах установлен EnableThemingдо True.Кроме того, я попытался удалить код настройки темы и применить тему на странице, используя Theme="en-gb", но безрезультатно.

Есть ли что-то сразу очевидное в отношении того, почему URL-адреса не разрешены?

1 Ответ

1 голос
/ 21 марта 2011

Используйте файл Skin для этого.Измените тег изображения на:

<asp:Image runat="server" SkinID="SomeImage/>

И в папке App_Themes\MyTheme\ добавьте новый файл обложки (MyTheme.skin) и добавьте следующее:

<asp:Image runat="server" SkinID="SomeImage" ImageUrl="images\image.jpg"/>

Скин этого изображения теперьуказывает на image.jpg в папке App_Themes\MyTheme\.

Для динамических изображений вы можете сделать это на своей базовой странице (если она у вас есть):

public string ThemePath { get { return "~/App_Themes/" + this.Theme + "/"; } }

public string MapThemePath(string relativePath)
{
    return string.Format("{0}{1}", this.ThemePath, relativePath);
}

Но, так как я могу 'Я не могу сказать, что это действительно рекомендуемое решение.В целом ваша тема содержит только необходимые вещи или макет и отображение.Вы говорите о динамических изображениях, которые, на мой взгляд, не соответствуют теме?Не уверен, просто мысль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...