在ascx文件中,我正在显示数据绑定字段中的数据,如下所示:
<%# Eval("Description")%>
数据源是从后面的代码绑定的。
有时Description
中有一些我需要替换的字符。我很乐意,如果我能做这样的事情:
<%# Replace(Eval("Description"), "a", "b")%>
但当然,数据绑定操作(<%#)
中不允许这样做。
我不想在后面的代码中对它进行硬编码,因为在后面的代码中提取字段会非常难看,可能会将其提取到变量然后在ascx页面上输出变量。我希望有一些(可能非常简单)的方法可以直接在ascx页面上进行替换。
答案 0 :(得分:16)
您可以将值强制转换为字符串并按如下方式处理:
<%# ((string)Eval("Description")).Replace("a", "b") %>
或者
<%# ((string)DataBinder.Eval(Container.DataItem, "Description")).Replace("a", "b") %>
但请注意,因为如果Description
为null
,您将会点击NullReferenceException
。您可以执行以下操作来避免这种情况:
<%# ((string)Eval("Description") ?? string.Empty).Replace("a", "b") %>
答案 1 :(得分:0)
你可以将数据绑定到一个匿名类型,其中包含从代码隐藏中填充的所有所需信息(包括此信息) - 比将其提取到变量要简单得多。