convert.isBDnull(“foo”)奇怪的行为

时间:2014-01-11 16:59:01

标签: c# dbnull

我已经得到了给定的代码:

file.ascx.cs

protected void Page_Load(object sender, EventArgs e)
{
    SqlDataSource.SelectCommand = @"SELECT reu.duree_minutes as DUREE
                                            FROM z_reunions reu"
    List.DataSourceID = "SqlDataSource";
    List.DataBind();
}

file.ascx

<asp:SqlDataSource ID="SqlDataSource" runat="server"></asp:SqlDataSource>
<asp:ListView ID="List" runat="server">

    ...
    <%if (Convert.IsDBNull("DUREE"))
      { %>
         <asp:Label ID="Label6" runat="server" Text='NULL' ></asp:Label>
    <%} else { %>
         <asp:Label ID="Label8" runat="server" Text='<%# Eval("DUREE").GetType() %>'></asp:Label>
    <%} %>

我得到了以下输出:

System.DBNull
System.DBNull
System.DBNull
System.DBNull
System.Int32
System.Int32

但我希望它是:

NULL
NULL
NULL
NULL
System.Int32
System.Int32

我错了吗?还是有一种奇怪的行为?

1 个答案:

答案 0 :(得分:1)

试试这个

<%# Eval("DUREE") == DBNull.Value ? <%# Eval("DUREE").GetType().ToString() %> : "NULL" %>

或只是

<%# Eval("DUREE") == DBNull.Value ? "System.DBNull" : "NULL" %>

而是使用&lt;%#Eval(“DUREE”)。GetType()。ToString()%&gt;和“NULL”你可以添加html

请参阅此处有关在if语句中使用Eval的信息 eval in if statement?

您可以将代码用于2个标签,并将Visible属性与Eval

一起使用
<asp:SqlDataSource ID="SqlDataSource" runat="server"></asp:SqlDataSource>
<asp:ListView ID="List" runat="server">

    ...
    <asp:Label ID="Label6" runat="server" Text='NULL' Visible='<%# Eval("DUREE") == DBNull.Value %>'></asp:Label>
    <asp:Label ID="Label8" runat="server" Text='<%# Eval("DUREE").GetType() %>' Visible='<%# Eval("DUREE") != DBNull.Value %>'></asp:Label>
相关问题