ASP.Net文本框控件在空时不返回NULL

时间:2010-03-16 02:02:24

标签: asp.net sql-server ado.net

参考我刚刚提出的这个问题 - SQL - Select all when filter value is empty - 似乎由于某种原因,空的TextBox的值没有被送到SQL Server作为NULL,因为它必定是。

有关如何解决此问题的任何想法?

5 个答案:

答案 0 :(得分:16)

空文本框将包含string.Empty,而不是null

来自TextBox.Text documentation

  

物业价值
  类型:System.String
  TextBox控件中显示的文本。 默认为空字符串(“”)。

如果您想确保它以null的身份转到数据库,请在以下路径转换:

string value = !string.IsNullOrEmpty(tb.Text) ? tb.Text: null;

答案 1 :(得分:4)

只是为了启发你:)

这是来自反射器:

public virtual string Text
{
    get
    {
        string str = (string) this.ViewState["Text"];
        if (str != null)
        {
            return str;
        }
        return string.Empty;
    }
    set
    {
        this.ViewState["Text"] = value;
    }
}

答案 2 :(得分:0)

您可以在没有任何C#的情况下执行此操作。

只需将ConvertEmptyStringToNull属性参数设置为true,例如:

<asp:ObjectDataSource runat="server" ID="ObjectDataSourceExample" TypeName="Example.ExampleTableAdapter" SelectMethod="GetDataBySomething">
    <SelectParameters>
        <asp:ControlParameter Name="Something" ConvertEmptyStringToNull="true" ControlID="tbSomething" />
    </SelectParameters>
</asp:ObjectDataSource>

答案 3 :(得分:0)

“”“财产价值 键入:System.String TextBox控件中显示的文本。默认值为空字符串(“”)。“”“

Aaronaught是对的。

Null是一个非常松散的术语,不应该,并且很容易与'Nothing'混淆,后者在编程中使用得更好。 textbox.text值永远不会为null,它将为“”。什么都没有指你是否已初始化字符串变量。 SOOOOO

the textbox itself could = Nothing
the textbox.text can only equal "" (or string.empty - function does the same thing) if the textbox isnot nothing

在引用字符串是否包含任何字符时,使用string.empty或“”是一般的经验法则

显然你在ur sqlcommand中使用的Paramater需要为null或者不是......

在VB中:

If TextBox.Text = "" Then
VariableUsedInSqlCommand = Nothing
End If

从她那里你可以将SP或Inline SqlCommand中的默认参数值设置为Null,所以当它收到一个没有的参数时,它会将参数恢复为= Null

在存储过程中(如果您将textbox.text值直接发送到SP参数):

If (@Paramater = "") 
Begin

end
else
begin

end

答案 4 :(得分:-1)

将ASP代码中的默认参数值设置为null