0

私は ASP.NET を初めて使用します。値が null または空白でない場合に、.aspx ファイルにコードのチャンクのみを表示する方法を見つけようとしています。ここに私が持っているものがありますDetailsView:

<asp:TemplateField HeaderText="Phone">
    <EditItemTemplate>
        <asp:TextBox runat="server" ID="txtPhone" Text='<%# Bind("Phone") %>'></asp:TextBox>
    </EditItemTemplate>
    <ItemTemplate>
        <a href="tel:<%# Eval("Phone") %>">
            <i class="icon-phone"></i>
            <%# Eval("Phone") %>
        </a>
    </ItemTemplate>
</asp:TemplateField>

nullまたは空白のa場合、タグ全体を条件付きで非表示にしたい。Eval("Phone")コードビハインドで何かを行うのではなく、マークアップでこれをすべて行うことをお勧めします。

4

3 に答える 3

1

デビッドの答えは私を正しい方向に向けました:

<asp:HyperLink runat="server" NavigateUrl='tel:<%# Eval("Phone") %>'
        Visible='<%# !string.IsNullOrWhiteSpace(Eval("Phone").ToString()) %>'>
    <i class="icon-phone"></i>
    <%# Eval("Phone") %>
</asp:HyperLink>
于 2012-06-14T21:37:29.910 に答える
0

まず、ASP:Hyperlink コントロールに変更します。html の A タグには、ASP:Hyperlink コントロールのような便利な Visible プロパティがありません。

次に、可視性を宣言的に設定できます。

<asp:HyperLink runat="Server" NavigateUrl='tel:<%# Eval("Phone") %>' Text='<%# Bind("Phone") %>' Visible = '<%= DataBinder.Eval(Container.DataItem("phone").ToString().Trim() == "" %>' />
于 2012-06-14T21:30:38.417 に答える
0

残念ながら、eval ステートメント内で if 条件を実行することはできません。代わりに、単純な eval を関数でラップするだけですが、この状況を処理するために、通常は NullHandler() というメソッドを追加します。以下の関数を考えてみましょう。

protected string NullHandler()(object gridViewObject)
   {
        if (object.ReferenceEquals(gridViewObject, DBNull.Value))
      {
            return "Empty";
       }
        else
       {
            return gridViewObject.ToString();
      }
    }

次に、以下のように置くことができます

<asp:Label ID=”phoneLbl” runat=”server” Text=’&lt;%# NullHandler(Eval(“Phone”)) %>’&gt;

この助けを願っています。

于 2012-06-14T21:31:31.020 に答える