如何在详细信息视图项模板中有条件地显示/隐藏链接
本文关键字:有条件 显示 链接 隐藏 详细信息 视图 | 更新日期: 2023-09-27 18:37:19
我是 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>
我想有条件地隐藏整个a
标签,如果Eval("Phone")
为空或空格。 我宁愿在标记中完成所有这些操作,而不是在代码隐藏中执行某些操作。
大卫的回答为我指明了正确的方向:
<asp:HyperLink runat="server" NavigateUrl='tel:<%# Eval("Phone") %>'
Visible='<%# !string.IsNullOrWhiteSpace(Eval("Phone").ToString()) %>'>
<i class="icon-phone"></i>
<%# Eval("Phone") %>
</asp:HyperLink>
首先,将其更改为 ASP:超链接控件。 html A 标记不像 ASP:超链接控件那样具有方便的 Visible 属性。
然后,您可以以声明方式设置可见性。
<asp:HyperLink runat="Server" NavigateUrl='tel:<%# Eval("Phone") %>' Text='<%# Bind("Phone") %>' Visible = '<%= DataBinder.Eval(Container.DataItem("phone").ToString().Trim() == "" %>' />
恐怕你不能在 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=’<%# NullHandler(Eval(“Phone”)) %>’>
希望这有帮助。