0

我是 ASP.NET 的新手,我试图弄清楚如果值不是空值或空格,如何仅在 .aspx 文件中显示一段代码。这是我所拥有的,在 a 内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>

如果为空或空格,我想有条件地隐藏整个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 回答