1

我在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>标签。所以我做了一个快速检查,以确保PaddingTopPaddingLeft正在使用Response.Write正确计算。奇怪的是,这次我运行它时,style属性正确显示!但没有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这一行意味着应用了style属性,所以如果有人能够解释我有兴趣知道为什么。