在databinder.eval中替换一个字符串

4
在我的.aspx代码中,我有以下元素。
<asp:Image ID="GalleryImage" runat="server" ImageUrl='<%# Eval("ProductImage") %>'                                             />

返回的值是一个从内容交付网络获取的图像URL,示例如下:'http://cdn.xyz.com'

我想将该URL转换为'https://cdn.xyz.com'

我尝试了ImageUrl='<%# Eval("ProductImage").Replace("http","https") %>',但似乎没有作用。有什么建议吗?


你的 ProductImage 是从哪里来的?你不想在 .cs(代码后台)那边进行更改吗? - teo van kot
@teovankot,我无法访问代码背后的内容。它位于一个dll文件中。 - Dominick
不确定,但是你尝试过这个吗:((string)Eval("ProductImage")).Replace("http","https") - teo van kot
“doesn't seem to work” 不是一个非常好的问题描述。请记得包括关于您的代码行为与您期望的行为有何不同的详细信息。它是否导致错误/异常? - user1429080
2个回答

10

你可以这样处理:

<%# ((string)Eval("ProductImage")).Replace("http", "https") %>

如果你的字符串可以为 null

<%# ((string)Eval("ProductImage") ?? string.Empty).Replace("http", "https") %>

并且它将是:

<asp:Image ID="GalleryImage" runat="server" ImageUrl='<%# ((string)Eval("ProductImage") ?? string.Empty).Replace("http", "https") %>'

或者如果您确定在任何情况下您的字符串不会是Null

<asp:Image ID="GalleryImage" runat="server" ImageUrl='<%# ((string)Eval("ProductImage")).Replace("http", "https") %>'

3

尝试这个,你可能需要先将其转换为String,才能让Replace起作用:

<asp:Image ID="GalleryImage" runat="server" ImageUrl='<%# Eval("ProductImage").ToString().Replace("http","https") %>'  

Eval返回的是一个对象,而Replace方法不能在对象上操作。您需要先将返回的对象强制转换/转换为字符串,然后再使用Replace方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接