簡體   English   中英

為什么在數據綁定轉發器中鏈接設置錯誤?

[英]Why is the link set wrong in my databound repeater?

我想在我的中繼器上顯示電子郵件鏈接(如果用戶選擇顯示其電子郵件地址),但是我得到的只是寫入實際鏈接的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“電子郵件地址”%20%>

我檢查了一下,每一行都有一個電子郵件地址,所以我真的不明白為什么會這樣。

誰能幫我修復它?

提前致謝!

嘗試從此更改您的mailto 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的數據綁定腳本(<%#%>)允許串聯字符串。 您還需要一個Text值才能使HyperLink服務器控件正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM