使用'<%# Eval("item") %>';处理空值并显示0

56
如果 dataitem 是 Null,我想显示 0
<asp:Label ID="Label18" Text='<%# Eval("item") %>' runat="server"></asp:Label>

我该如何实现这个目标?

12个回答

69
您还可以在页面上创建一个公共方法,然后从前端代码中调用该方法。例如,如果使用C#:
public string ProcessMyDataItem(object myValue)
{
  if (myValue == null)
  {
     return "0 value";
  }

  return myValue.ToString();
}

那么代码片段中的标签将会是这样的:

<asp:Label ID="Label18" Text='<%# ProcessMyDataItem(Eval("item")) %>' runat="server"></asp:Label>

抱歉,我没有测试过这段代码,所以无法保证我完全正确地理解了 "<%# ProcessMyDataItem(Eval("item")) %>" 的语法。


9
我在 <%# %> 标签中进行了检查,但是 == null 并没有识别出空值的返回结果;我必须使用 == DBNull.Value。 - user467384
我应该在我的代码中的哪里添加这个:http://stackoverflow.com/questions/27237555/why-empty-cell-throws-an-error-during-sql-stored-procedure-execution - SearchForKnowledge
值得额外检查一下myValue.ToString()是否为空。例如,如果MyDate是可空的DateTime对象,则Eval("MyDate", "{0:d}")会返回一个空字符串。 - Kevin Shea

52

我在使用这个代码处理字符串数值:

<%#(String.IsNullOrEmpty(Eval("Data").ToString()) ? "0" : Eval("Data"))%>

对于可空值,您还可以使用以下方法:

<%#(Eval("Data") == null ? "0" : Eval("Data"))%>

如果你正在使用 .Net 4.5 及以上版本,我建议你使用强类型数据绑定。详情请参考这里

<asp:Repeater runat="server" DataSourceID="odsUsers" ItemType="Entity.User">
    <ItemTemplate>
        <%# Item.Title %>
    </ItemTemplate>
</asp:Repeater>

如果Eval("Data")为空,这不会抛出异常吗? - KannedFarU
2
如果值为DBNull.Value,则不会。例如:object a = DBNull.Value; Response.Write(a.ToString()); - HasanG

13

我在VB.Net中使用以下内容:

<%# If(Eval("item").ToString() Is DBNull.Value, "0 value", Eval("item")) %>

我应该在我的代码中的哪里添加这个:http://stackoverflow.com/questions/27237555/why-empty-cell-throws-an-error-during-sql-stored-procedure-execution - SearchForKnowledge

4
它应该也能正常工作。
Eval("item") == null?"0": Eval("item");

3

1
使用 IIF。
<asp:Label ID="Label18" Text='<%# IIF(Eval("item") Is DBNull.Value,"0", Eval("item") %>' 
runat="server"></asp:Label>

1
使用了修改过的Jason的答案:
public string ProcessMyDataItem(object myValue)
{
  if (myValue.ToString().Length < 1)
  {
     return "0 value";
  }

  return myValue.ToString();
}

1
尝试使用这段代码,它可能有用 -
<%# ((DataBinder.Eval(Container.DataItem,"ImageFilename").ToString()=="") ? "" :"<a
 href="+DataBinder.Eval(Container.DataItem, "link")+"><img
 src='/Images/Products/"+DataBinder.Eval(Container.DataItem,
 "ImageFilename")+"' border='0' /></a>")%>

1

0

我已经尝试了这段代码,它可以很好地处理空值和空字符串的情况:

'<%# (Eval("item")=="" || Eval("item")==null) ? "0" : Eval("item")%>'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接