【问题标题】:Style attribute not appearing样式属性未出现
【发布时间】:2011-09-25 00:35:46
【问题描述】:

我在 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>

当我运行此代码时,&lt;a&gt; 标记没有应用任何填充。所以我做了一个快速检查,以确保使用Response.Write 正确计算PaddingTopPaddingLeft。奇怪的是,我这次运行的时候,style属性正确出现了!但是没有Response.Write,就没有style属性。

我做错了什么?

【问题讨论】:

    标签: asp.net positioning vertical-alignment alignment response.write


    【解决方案1】:

    休息一下后,我刚刚回来再看一遍。看了 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 行意味着应用了样式属性,所以如果有人能解释我很想知道为什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      • 1970-01-01
      • 2018-01-19
      • 2016-12-12
      • 2021-11-09
      • 2014-02-18
      • 2016-03-28
      相关资源
      最近更新 更多