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

Muh*_*tar 53 asp.net dataitem

如果Null我想要显示dataitem0

<asp:Label ID="Label18" Text='<%# Eval("item") %>' runat="server"></asp:Label>
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?

Jas*_*ers 69

您还可以在页面上创建一个公共方法,然后从前面的代码中调用它.

例如,如果使用C#:

public string ProcessMyDataItem(object myValue)
{
  if (myValue == null)
  {
     return "0 value";
  }

  return myValue.ToString();
}
Run Code Online (Sandbox Code Playgroud)

然后,代码在前面的标签将是这样的:

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

对不起,没有测试过这段代码,所以不能保证我的语法" <%# ProcessMyDataItem(Eval("item")) %>"完全正确.

  • 我在<%#%>标签中进行了检查,并且== null没有识别出null返回值; 我不得不使用== DBNull.Value. (7认同)

Has*_*anG 48

我正在使用它来表示字符串值:

<%#(String.IsNullOrEmpty(Eval("Data").ToString()) ? "0" : Eval("Data"))%>
Run Code Online (Sandbox Code Playgroud)

您还可以使用以下值作为可空值:

<%#(Eval("Data") == null ? "0" : Eval("Data"))%>
Run Code Online (Sandbox Code Playgroud)

此外,如果您使用.net 4.5及更高版本,我建议您使用强类型数据绑定:

<asp:Repeater runat="server" DataSourceID="odsUsers" ItemType="Entity.User">
    <ItemTemplate>
        <%# Item.Title %>
    </ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

  • 如果值为 DBNull.Value 则不会。示例:对象 a = DBNull.Value; Response.Write(a.ToString()); (2认同)

Jon*_*nty 13

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

<%# If(Eval("item").ToString() Is DBNull.Value, "0 value", Eval("item")) %>
Run Code Online (Sandbox Code Playgroud)