【发布时间】:2013-07-18 13:45:57
【问题描述】:
我正在将图像绑定到数据列表。从数据库中获取图像名称并给出路径。
我的代码是:
<asp:DataList ID="dlImages" runat="server" RepeatColumns="4">
<ItemTemplate>
<asp:ImageButton ID="ImageButton1" Height="200px" Width="200px" ImageUrl='<%# Eval("PageName","D:\Sagar\Kinston\WebSite\ScreenMasterImages\{0}.jpg") %>' runat="server" />
</ItemTemplate>
</asp:DataList>
在 .cs 页面上:
ds = gc.GetDataToListBinder("select DISTINCT PageOrderID,PageName from ScreenMaster order by PageOrderID")
dlImages.DataSource = ds.Tables(0)
dlImages.DataBind()
我面临两个问题:
- 当 imagename 之间有空格时,它会在其间添加 %20 例如。如果 imagename 为“API Message”,则取为:“API%20Message”
我试过这个问题:
添加ImageUrl='<%#Server.HtmlDecode(Eval("PageName","D:\Sagar\Kinston\WebSite\ScreenMasterImages\{0}.jpg"))'
但我得到了错误:
XML literals and XML properties are not supported in embedded code within ASP.NET
- 如果没有空格 Eg.image name is "Charges" ,那么它也不会在datalist中显示。
当我运行项目并右键单击它并查看源代码时,它会向我显示正确的路径:
src="D:\Sagar\Kinston\WebSite\ScreenMasterImages\Charges.jpg"
但不显示图像。
请帮我看看上面的代码。
我哪里做错了?
我还应该添加什么?
【问题讨论】:
-
无论如何,您都不应该使用物理路径...请改用相对路径!比如
[WEBROOT]\ScreenMasterImages\{0}.jpg或者~\ScreenMasterImages\{0}jpg! (对于我的第一个示例,将 [WEBROOT] 替换为好的信息)。 -
@SimonDugré 谢谢,但实际问题呢?
-
@SimonDugré 提到的是真正的问题。您不会通过驱动器号引用网页中的图像。它需要与您的网络应用程序所在的位置相关。试试他给出的第二个例子。此外,Web 应用程序需要 将空格替换为
%20- 不要解码它们。 URL 不能包含空格。
标签: asp.net .net vb.net visual-studio-2008