【发布时间】:2014-04-03 12:24:11
【问题描述】:
我有一个超链接转发器,我与包含一些 URL 的 List<string> 绑定:
<asp:Repeater id="linksRepeater" runat="server">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" Text='Url to ??' NavigateUrl='<%# Container.DataItem.ToString() %>' />
</ItemTemplate>
</asp:Repeater>
// Bind data in the code behind
List<string> urls = GetUrls();
linksRepeater.DataSource = urls;
linksRepeater.DataBind();
// Example:
// urls[0] = "http://siteA.com/subsite/sub/sub2/web1.html"
// urls[1] = "http://siteA.com/subsite/x/y/web2.html"
// urls[2] = "http://siteB.com/x/web3.html"
问题是,使用这段代码,所有的超链接当然是这样显示的:
- “网址到 ??”
- “网址到 ??”
- “网址到 ??”
相反,我想用以下方法调用的结果替换每个超链接实例的Text 属性:
string TransformUrl(string url) - 像这样:
<asp:HyperLink ID="HyperLink1" runat="server" Text='Url to <%# TransformUrl(Container.DataItem.ToString()) %>' NavigateUrl='<%# Container.DataItem.ToString() %>' />
但是,此代码会导致错误。 TransformURL() 方法处理 URL 并返回一个新字符串,即我试图得到类似的东西:
- “指向 siteA.com web1 的网址 [状态:正常]”
- “指向 siteA.com web2 [状态:正常] 的网址”
- “指向 siteB.com web3 的网址 [状态:缺失]”
最好的方法是什么,即根据Container.DataItem 的值为每个超链接分配不同的文本属性?
【问题讨论】: