我正在从sql服务器数据库中加载Listview
。行包含blob ID
。我从Blob容器的基本URL构造了blob ID
,然后尝试显示图像。什么都没发生。这是我的代码:
protected void PhotosListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
var itm = e.Item;
ImageButton imgBtn = (ImageButton)itm.FindControl("itemImageButton");
Label TNlbl = (Label)itm.FindControl("BlobPhotoIDLabel");
string blobContainerId = (string)Session["BlobContId"];
string imgUrl = blobClient.StorageUri.PrimaryUri + blobContainerId.ToLower() + "/" + TNlbl.Text;
imgBtn.ResolveClientUrl(imgUrl);
}
这是标记:
<td runat="server" style="background-color: #DCDCDC; color: #000000;">
<asp:ImageButton ID="itemImageButton" runat="server"
CommandArgument="<%# Container.DataItem %>"
Width="180" Height="120"
OnCommand="itemImageButton_Command"/>
<br />PhotoId:
<asp:Label ID="PhotoIdLabel" runat="server" Text='<%# Eval("PhotoId") %>' />
<br />PhotoTitle:
<asp:Label ID="PhotoTitleLabel" runat="server" Text='<%# Eval("PhotoTitle") %>' />
// etc
很麻烦,另一页上的类似代码可以正常工作。我想念什么?我也在数据绑定和数据绑定事件中尝试过。标题和数据库中的其他数据显示正常。构造的Blob网址似乎有效。
答案 0 :(得分:0)
所构建的Blob网址显示为有效。
您可以尝试在浏览器中添加他的Blob网址,以检查图像是否可用。
如果您无法在浏览器中查看它,那么正如Gaurav所说的,请检查您容器的Public Access Level
。应该是Blob
或Container
而不是Private(no anonymous access)
。
如果该网址有效,请使用以下代码显示图片:
Url=imgBtn.ResolveClientUrl(imgUrl); //Gets a URL that can be used by the browser.
imgBtn.imageUrl(Url);
有关ResolveClientUrl
的更多详细信息,您可以参考此article。