Атрибут стиля не отображается - PullRequest
1 голос
/ 29 июня 2011

Я отображаю изображение в каждом элементе 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 атрибут стиля отсутствует.

Что я делаю не так?

1 Ответ

1 голос
/ 06 июля 2011

Я только что вернулся, чтобы еще раз взглянуть на это после перерыва. Потратив на это 5 минут, я вдруг понял, что не указал единицы измерения для заполнения! Я изменил код с:

LogoLink.Attributes.Add("style", String.Format("padding: {0} 0 0 {1};", PaddingTop, PaddingLeft))

до:

LogoLink.Attributes.Add("style", String.Format("padding: {0}px 0 0 {1}px;", PaddingTop, PaddingLeft))

Теперь это работает! Кроме того, я обнаружил, что атрибут style действительно отображается в источнике (если вы просматриваете исходный код страницы), его просто нет, если его проверять в Firebug, который выбил меня из колеи. Я до сих пор не понимаю, почему добавление строки Response.Write означало, что был применен атрибут style, поэтому, если кто-нибудь сможет объяснить, мне будет интересно узнать, почему.

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