为什么我的数据中继转发器中的链接设置错误?

时间:2014-05-09 00:42:15

标签: asp.net data-binding repeater databinder

我想在我的转发器上显示电子邮件链接(如果用户已选择显示他/她的电子邮件地址),但我得到的只是Databinder.Eval(Container.DataItem, "emailaddress")写入实际链接。它没有被解析,因为它应该......

这是我的标记:

<asp:Repeater runat="server" ID="rptGuestbook" OnItemCommand="rptGuestbook_ItemCommand"
    OnItemDataBound="rptGuestbook_ItemDataBound" DataSource="<%# guestbookData %>">
    <ItemTemplate>
        <div runat="server" id="divPost" class="post">
            <div runat="server" id="divAuthor" class="author">
                <asp:Panel runat="server" ID="pnlAdmin" CssClass="delete-button" Visible="false">
                    <asp:Button runat="server" ID="btnDeletePost" CssClass="button" Text="Delete Post"
                        CommandName="DeletePost" CommandArgument='<%# Eval("postid") %>' />
                    <asp:Label runat="server" ID="lblShowEmail" Text='<%# Eval("showemail") %>' CssClass="hidden"></asp:Label>
                </asp:Panel>
                <ul>
                    <li>#<%# Eval("postid") %></li>
                    <li><span>Posted By: </span>
                        <%# Eval("postauthor") %><br />
                        <li>
                            <asp:HyperLink runat="server" ID="lnkWeb" ImageUrl="~/Images/webicon.png" NavigateUrl='<%# Eval("webaddress") %>'></asp:HyperLink></li>
                        <li>
                            <asp:HyperLink runat="server" ID="lnkEmail" ImageUrl="~/Images/emailicon.png" NavigateUrl='mailto: <%# DataBinder.Eval(Container.DataItem, "emailaddress" %>'></asp:HyperLink></li>
                </ul>
            </div>
            <div runat="server" id="divMessage" class="post-message">
                <div class="post-date">
                    <span>Posted On:</span>
                    <%# Eval("postdate") %></div>
                <%# Eval("postmessage") %></div>
            <div class="scroll">
            </div>
        </div>
    </ItemTemplate>
</asp:Repeater>

<asp:HyperLink runat="server" ID="lnkEmail" ImageUrl="~/Images/emailicon.png" NavigateUrl='mailto: <%# DataBinder.Eval(Container.DataItem, "emailaddress" %>'></asp:HyperLink>

这正是我的浏览器认为链接是......

  

%20℃%%#20DataBinder.Eval(的Container.DataItem,%20 “EMAILADDRESS” %20%&GT;

我已经检查过,每一行都有一个电子邮件地址,所以我真的不明白为什么会这样。

有人可以帮我解决吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

尝试将邮件更改为HyperLink:

<asp:HyperLink runat="server" 
               ID="lnkEmail" 
               ImageUrl="~/Images/emailicon.png" 
               NavigateUrl='mailto: <%# DataBinder.Eval(Container.DataItem, "emailaddress" %>'></asp:HyperLink>

到这个

<asp:HyperLink runat="server" 
               ID="lnkEmail" 
               ImageUrl="~/Images/emailicon.png" 
               NavigateUrl='<%# "mailto:" + Eval("emailaddress") %>'
               Text='<%# Eval("emailaddress") %>'></asp:HyperLink>

如user256103所述,你在DataBinder.Eval中缺少一个结束语。我认为更大的问题是NavigateUrl的价值。 ASP.NET的数据绑定scriplet(&lt;%#%&gt;)允许连接字符串。您还需要一个Text值才能使HyperLink服务器控件正常工作。