Я отображаю изображение в каждом элементе ListView.Я хочу, чтобы изображение располагалось по центру как по горизонтали, так и по вертикали.Мой код выглядит следующим образом:
Protected Sub MembersLV_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles MembersLV.ItemDataBound
If e.Item.ItemType = ListViewItemType.DataItem Then
Dim LogoImage As System.Web.UI.WebControls.Image = e.Item.FindControl("LogoImage")
Dim LogoLink As HtmlControl = e.Item.FindControl("LogoLink")
Dim di As ListViewDataItem = DirectCast(e.Item, ListViewDataItem)
Dim ImageFileName As String = di.DataItem("FileName")
Dim FilePath As String = String.Format("/Uploads/MembersDirectory/w125h85/{0}", ImageFileName)
If File.Exists(Server.MapPath(FilePath)) Then
LogoImage.ImageUrl = FilePath
Dim BoxHeight As Integer = 101
Dim BoxWidth As Integer = 138
Dim B As New Bitmap(Server.MapPath(FilePath))
Dim BHeight As Integer = B.Height
Dim BWidth As Integer = B.Width
Dim PaddingTop As Integer = Math.Ceiling(BoxHeight - BHeight) / 2
Dim PaddingLeft As Integer = Math.Ceiling(BoxWidth - BWidth) / 2
LogoLink.Attributes.Add("style", String.Format("padding: {0} 0 0 {1};", PaddingTop, PaddingLeft))
End If
End If
End Sub
Я просто вычисляю количество отступов, необходимое для верхней и левой частей изображения для его центрирования, а затем добавляю этот отступ как атрибут стиля к окружающему тегу.
Код в файле aspx выглядит следующим образом:
<a href='<%#Eval("Website") %>' id="LogoLink" runat="server">
<asp:Image ID="LogoImage" runat="server" AlternateText='<%#Eval("Name") %>' />
</a>
Когда я запускал этот код, к тегам <a>
не добавлялось никаких отступов.Поэтому я сделал быструю проверку, чтобы убедиться, что PaddingTop
и PaddingLeft
правильно вычисляются с использованием Response.Write
.Странно, но когда я запустил его, атрибут style появился правильно!Но без Response.Write
атрибут стиля отсутствует.
Что я делаю не так?