为什么简单<%Eval()%>将在IE和Chrome中使用,而不是在Firefox中?

时间:2009-06-02 21:58:40

标签: .net asp.net

以下代码:

<asp:HyperLink ID="Image1_Link" runat="server" 
Text='<% "< img src=" + PhotoGalleryBaseUrl +  Eval("image_file_name") + ">" %>'>
</asp:HyperLink>
Image Size:
<asp:Label ID="image_sizeLabel" runat="server" Text='<%# Eval("image_size") %>'>
</asp:Label><br />

在Chrome和IE中呈现如下: Right Rendering http://cp.images.s3.amazonaws.com/ForumImages/cp-6-2-2009-4.53.28%20PM-03.png

在Firefox中渲染如此(这显然是错误的): Wrong Rendering http://cp.images.s3.amazonaws.com/ForumImages/cp-6-2-2009-4.55.10%20PM-04.png

编辑2:将#符号放在&lt;%前面不起作用。使用#符号会在所有浏览器中呈现错误。

4 个答案:

答案 0 :(得分:2)

您是否查看了呈现的页面源代码。如果是这样,它会产生相同的来源吗?

答案 1 :(得分:1)

我相信这是因为你在这里错过了一个“#”声明。尝试一下(这是未经测试的)。

    Text='<% "< img src=
    // should be
    Text='<%# "< img src=

<强> [编辑]

您可以使用此代码重试它并查看它是否有效吗?

<asp:HyperLink ID="Image1_Link" runat="server">
<%# "<img src='" + PhotoGalleryBaseUrl +  Eval("image_file_name") + "' />" %>
</asp:HyperLink>
Image Size:
<asp:Label ID="image_sizeLabel" runat="server" Text='<%# Eval("image_size") %>'>
</asp:Label><br />

答案 2 :(得分:1)

您正在将链接的文本设置为某个奇怪的字符串。如果名称有任何空格,则引号在构造的字符串中不起作用。

如果您确实想要在链接中显示图像,请改用ImageUrl。

&lt;%...%&gt;正在被发送到浏览器。 IE和Chrome只是忽略它作为评论。

答案 3 :(得分:1)

尝试的另一个选择是:

<asp:HyperLink ID="HyperLink1" runat="server" 
Text='<%# GetImageString(PhotoGalleryBaseUrl + Eval("image_file_name").ToString() )%>'>
</asp:HyperLink>

(不要忘记Eval上的字符串转换)

GetImageString()是页面上的公共方法:

public string GetImageString(string imageFilePath)
{
return "<img src='" + imageFilePath + "'>";
}