2014-05-09 2 views
0

Je veux montrer des liens d'email sur mon répéteur (si l'utilisateur a choisi d'avoir son adresse électronique montrée) mais tout ce que j'obtiens est le Databinder.Eval(Container.DataItem, "emailaddress") écrivant au lien réel. Il n'est pas analysé comme il se doit ...Pourquoi l'ensemble de liens est-il erroné dans mon répéteur de base de données?

Voici mon balisage:

<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> 

Et voici exactement ce que mon navigateur pense que le lien est ...

% 20 <% #% 20DataBinder.Eval (Container.DataItem,% 20 "adresse électronique"% 20%>

J'ai vérifié et chaque ligne contient une adresse e-mail, donc je ne comprends vraiment pas pourquoi cela se produit.

Quelqu'un peut-il m'aider à le réparer?

Merci d'avance!

Répondre

0

Essayez de changer mailto HyperLink de ceci:

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

à cette

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

comme mentionné user256103 vous manque un paren de clôture dans votre DataBinder.Eval. Je pense que le plus gros problème est la valeur de NavigateUrl. Le scriplet de liaison de données d'ASP.NET (<% #%>) permet de concaténer les chaînes. Vous aurez également besoin d'une valeur Text pour que le contrôle du serveur HyperLink fonctionne.

+0

Eh bien, j'ai ajouté le support manquant suggéré par l'utilisateur256103 et cela n'a pas aidé ... J'ai donc copié cela et son tri, merci! – Ortund

+0

De rien. J'espère que ça a aidé. –

Questions connexes