我是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")
标记。我更愿意在标记中执行此操作,而不是在代码隐藏中执行某些操作。
答案 0 :(得分:1)
David's answer向我指出了正确的方向:
<asp:HyperLink runat="server" NavigateUrl='tel:<%# Eval("Phone") %>'
Visible='<%# !string.IsNullOrWhiteSpace(Eval("Phone").ToString()) %>'>
<i class="icon-phone"></i>
<%# Eval("Phone") %>
</asp:HyperLink>
答案 1 :(得分:0)
首先,将其更改为ASP:超链接控件。 html A标签没有像ASP:Hyperlink控件那样方便的Visible属性。
然后,您可以声明性地设置可见性。
<asp:HyperLink runat="Server" NavigateUrl='tel:<%# Eval("Phone") %>' Text='<%# Bind("Phone") %>' Visible = '<%= DataBinder.Eval(Container.DataItem("phone").ToString().Trim() == "" %>' />
答案 2 :(得分:0)
如果在eval声明中,我恐怕你不能做条件。相反,只需使用函数包装简单的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”)) %>’>
希望得到这个帮助。