Как использовать ресурс изображения на сайте asp.net?

У меня есть сайт С#, который использует множество изображений со встроенным текстом на английском языке.

Как я могу использовать стандартный файл ресурсов для замены изображений в зависимости от языка?

У меня есть файл resx в моем каталоге App_GlobalResources, но я не могу правильно подключить его к элементу управления asp:image для URL-адреса изображения.

Идеи?

ОБНОВЛЕНИЕ:

Для получения дополнительной информации, вот код тега изображения:

<asp:image runat="server" ID="img2" ImageUrl="<%$Resources: Resource, cs_logo %>" />

Результат на стороне клиента:

<img id="img2" src="System.Drawing.Bitmap" style="border-width:0px;" />

Обратите внимание, что источник явно не такой, как я ожидал...


person NotMe    schedule 28.10.2008    source источник
comment
если бы вы попытались сохранить ресурс как строку и установить значение для местоположения URL-адреса вместо сохранения изображения в файле ресурсов, если нет, то вам нужно будет буферизовать содержимое   -  person Oscar Cabrero    schedule 29.10.2008
comment
Похоже, это единственный вариант. Обновите свой ответ, и я отмечу его как принятый.   -  person NotMe    schedule 29.10.2008


Ответы (3)


вы можете сохранить URL-адрес изображения в файле ресурсов и использовать следующий встроенный код в элементе управления

<asp:Image ImageUrl="<%$resources:Image1 %>" />

Обновлять

эта ссылка может быть полезной для того, чего вы пытаетесь достичь

or

вы также можете попытаться сохранить ресурс в виде строки и установить значение для местоположения URL-адреса вместо сохранения изображения в файле ресурсов.

person Oscar Cabrero    schedule 28.10.2008
comment
обязательно сохраните, добавьте ключ cs_logo на все страницы конкретных ресурсов и ресурсов по умолчанию, т.е. Default.aspx.resx и не только на ваших конкретных культурных страницах - person Oscar Cabrero; 29.10.2008
comment
У меня есть файл Resources.resx, который содержит 1 ресурс cs_logo. Я просто пытаюсь заставить его работать на английском языке по умолчанию... - person NotMe; 29.10.2008
comment
Ладно, мимо этого. Однако изображение не загружается и для URL-адреса выдается следующее: localhost:32672/System.Drawing. Растровое изображение - person NotMe; 29.10.2008

Одна вещь, которую вы можете попробовать сделать, это создать простую «службу изображений», которая может обслуживать изображения в правильном формате из встроенных ресурсов.

Вам не нужно создавать саму веб-службу, вы просто создаете страницу aspx и в коде позади вас измените Response.ContentType на «image/png» или любой другой формат, который вы предпочитаете. Для этого также требуется параметр get в URL-адресе самой страницы, но его можно легко отфильтровать. Таким образом, метод Page_Load вашего сервиса изображений может выглядеть примерно так:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

      Dim FinalBitmap As Bitmap
      Dim strRenderSource As String
      Dim msStream As New MemoryStream()

      strRenderSource = Request.Params("ImageName").ToString()

      ' Write your code here that gets the image from the app resources.
      FinalBitmap = New Bitmap(Me.Resources(strRenderSource))
      FinalBitmap.Save(msStream, ImageFormat.Png)

      Response.Clear()
      Response.ContentType = "image/png"

      msStream.WriteTo(Response.OutputStream)

      If Not IsNothing(FinalBitmap) Then FinalBitmap.Dispose()

End Sub

Затем вернитесь на свою страницу ASPX, у вас есть...

<asp:Image ImageUrl="http://localhost/GetImage.aspx?ImageName=Image1" />

О, и не забудьте импортировать System.Drawing и System.Drawing.Imaging на страницу.

person Dillie-O    schedule 28.10.2008

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

<img id="WelocmeICon" runat="server"  alt="welcome icon" 
     src="<%$resources:NmcResource,WelcomeIcon %>"  />

и поскольку я использую управление img, я добавил для него runatserver и идентификатор

person Community    schedule 04.12.2009