3

そのため、この質問に対する適切な回答を探していましたが、実際に役立つものは何も見つかりませんでした。うまくいけば、誰かが私のためにこれに光を当てることができます.

基本的に、データベース テーブルに支えられたリピーターがあります。このリピーターの ItemTemplate の内部には、リスト内の各項目のプロパティが取り込まれた HTML 要素がいくつかあります。かなり標準的なもの。ただし、項目の 1 つが null になる可能性があります。その場合、問題のあるコードの周りに何らかのif (blah != null)ロジックを配置することは理にかなっています。唯一の問題は、私がそうしようとすると、ASP がスローして、 の中で if ステートメントを使用できないことを教えてくれることです<%# %>

大衆への私の質問は次のとおりです。 if ステートメントを の中で使用できない場合<%# %>、各アイテムの値に基づいて条件付きロジックをどのように実行することになっていますか?

リピーター内で独自のメソッドを呼び出すことができることは知っていますが、それは私がやろうとしていることにはうまくいきません。

以下は、私の要点をよりよく説明するために、私が達成しようとしていることです。

<asp:Repeater runat="server" ID="repeater">
    <ItemTemplate>
        <div class="item-wrap">
            <% if(Eval("imageUrl") != null) { %>
            <div class="plan-img">
                <asp:Image runat="server" ImageUrl='<%# Eval("imageUrl") %>'/>
            </div>
            <% } %>
        </div>
    </ItemTemplate>
</asp:Repeater>
4

2 に答える 2

8

ItemTemplate次のようにマークアップを記述します。

<asp:Panel runat="server" Visible='<%# Eval("imageUrl") != null %>'>
    <asp:Image runat="server" ImageUrl='<%# Eval("imageUrl") %>'/>
</asp:Panel>

<%基本的に、コードとデータバインディング構造を混在させることはできません<%#

私のアドバイスは、CodeBehind に次のプロパティを追加することです。

    protected YourClass DataItem
    {
        get
        {
            return (YourClass)this.Page.GetDataItem();
        }
    }

そして、なしでマークアップを書きますEval():

    <asp:Image runat="server" ImageUrl='<%# DataItem.imageUrl %>'/>
于 2012-11-14T20:15:34.620 に答える
0

テンプレート内のすべてのアイテムに対して同じコンテンツを生成することになっています。特定のアイテムに使用する必要がない場合は、バインディング イベントでその可視性を false に設定するだけです。

于 2012-11-14T20:14:53.327 に答える