2

私は持っています:

  • データリピーター
  • リピーターでの制御

そして、コントロールにいくつかの値を入れたいと思います。現時点では、次のように制御できます。

<asp:Repeater runat="server" ID="ArchiveEntryRepeater">
    snip
    <asp:HyperLink ID="HyperLink1" ToolTip="Comment on Some Entry Title Here" runat="server" NavigateUrl="~/Blog/7/How-to-know-when-this/Comments">
        <strong><%# DataBinder.Eval(Container.DataItem, "Comments")%></strong> Comments
    </asp:HyperLink>
    snip
</asp:Repeater> 

これは問題なく動作しますが、私は置きたいです

<%# DataBinder.Eval(Container.DataItem, "Title")%>

ハイパーリンクのNavigateURLプロパティに。入れるだけではうまくいかないようです!

4

3 に答える 3

3

ASP.NET パーサーを混乱させないように、NavigateURL を二重引用符ではなくアポストロフィで囲みます。

<asp:HyperLink runat="server" NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "Title")%>' [...]>[...]</asp:HyperLink>

これはあなたの問題かもしれません。

于 2011-04-14T19:12:18.477 に答える
1

イベントitemdataboundを使用して、いつでもバックエンドでバインドできます。特に、データがきれいに表示されない場合や、何らかの大規模な操作が必要な場合に、いくつかの利点があります。

于 2011-04-14T19:11:24.450 に答える
0

別のオプションは、コントロールを緩めて、次のようなhtmlアンカーコントロールに置き換えることです。

 <asp:Repeater>
        <ItemTemplate>
            <a id="HyperLink1" title="Comment on Some Entry Title Here" href='<%# DataBinder.Eval(Container.DataItem, "Title")%>'
                style="font-weight: bold">'<%# DataBinder.Eval(Container.DataItem, "Comments")%>'</a>
        </ItemTemplate>
    </asp:Repeater>

サーバーがクライアントへのハイパーリンクをレンダリングすると、通常、「runat='server'」にする理由はありません。目的は、別のページに移動して、asp:HyperLinkとnchorを使用するオーバーヘッドが無駄になるようにすることです。

于 2011-04-14T19:27:25.040 に答える