我所拥有的是一个asp转发器,它可以为在网页管理部分创建的事件提供信息。 允许这些事件将图像添加到它们上,我能够正确地显示图像,但我想要做的是在没有可用图像的情况下通过一般图像。 我现在刚才:
<img id="eventlogoholder" visible="<%#If(Eval("event_logo").ToString > "", "True", "False")%>", title= "<%# Eval("event_title").ToString%>" alt="" src="<%# Replace(Eval("event_logo").ToString, Application("IMAGEFOLDER"), Application("IMAGETHUMBNAILS"))%>" />
所以这样做是将visible设置为false,如果没有图像存在,否则它将通过图像。 那么我怎么能修改源代码以便它改为:
&#34; /Images/Thumbnailimages/posters/Noimage.jpg"
如果没有图像?
感谢
斯科特
答案 0 :(得分:0)
首先,您使用的是常规HTML <img
代码,而不是<asp:Image
。在常规图像中设置visible=false
不会做任何事情。
要么使用asp.net图像,要么使用类(class="hiddenImage"
)或内联CSS(style="display: none"
)设置可见性。
其次,您的IF声明是错误的。它应该看起来像<%# Not String.IsNullOrEmpty(Eval("event_logo").ToString) %>
。
但是使用asp.net图像会更好,你可以通过这种方式获得更多控制权。
<asp:Image ID="eventlogoholder" runat="server" Visible='<%# Not String.IsNullOrEmpty(Eval("event_logo").ToString) %>' ImageUrl='<%# Replace(Eval("event_logo").ToString, Application("IMAGEFOLDER"), Application("IMAGETHUMBNAILS")) %>' ToolTip='<%# Eval("event_title").ToString %>' AlternateText="myAltText" />
请注意,使用Repeater中的值时,您使用单引号 当它是普通属性时,你使用双引号。
PS使用http://www.carlosag.net/tools/codetranslator将代码从C#转换为VB,因此可能不是100%正确。
<强>更新强>
ImageUrl='<%# IIf ( String.IsNullOrEmpty(Eval("event_logo").ToString), "/Images/Thumbnailimages/posters/Noimage.jpg", Eval("event_logo").ToString) %>'
或
src="<%# IIf ( String.IsNullOrEmpty(Eval("event_logo").ToString), "/Images/Thumbnailimages/posters/Noimage.jpg", Eval("event_logo").ToString) %>"
答案 1 :(得分:0)
基于评论的解决方案有:
相反Else
将其替换为,
(句号)...... If(condition, do if true, do if false)
src='<%#If(Eval("event_logo").ToString.Trim <> "", Replace(Eval("event_logo").ToString, Application("IMAGEFOLDER"), Application("IMAGETHUMBNAILS")) , "/Images/Thumbnailimages/posters/Noimage.jpg")%>'
因为您使用eval您必须将所有代码放在'
而不是"
,src='**code**'
您必须使用<>
代替>
,处理字符串,而不是数字。
我在Trim
中添加Eval("event_logo").ToString.Trim
...可以为空,空格字符和条件为真
当然,现在您可以删除visible