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

发布于 2024-08-25 10:18:33 字数 234 浏览 1 评论 0原文

关于我刚刚问的这个问题 - SQL - 选择全部过滤器值为空 —— 似乎由于某种原因,空的 TextBox 的值没有像它应该的那样作为 NULL 提供给 SQL Server。

关于如何解决这个问题有什么想法吗?

In reference to this question that I just asked -- SQL - Select all when filter value is empty -- it appears that for some reason, an empty TextBox's value is not being fed to SQL Server as NULL, as it ought to be.

Any ideas on how to fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

倾`听者〃 2024-09-01 10:18:34

只是为了启发您:)

这是来自反射器:

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

just to enlighten you :)

this is from reflector:

public virtual string Text
{
    get
    {
        string str = (string) this.ViewState["Text"];
        if (str != null)
        {
            return str;
        }
        return string.Empty;
    }
    set
    {
        this.ViewState["Text"] = value;
    }
}
ˇ宁静的妩媚 2024-09-01 10:18:34

无需任何 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>

You can do this without any C#.

Simply set the parameters ConvertEmptyStringToNull property to true, eg:

<asp:ObjectDataSource runat="server" ID="ObjectDataSourceExample" TypeName="Example.ExampleTableAdapter" SelectMethod="GetDataBySomething">
    <SelectParameters>
        <asp:ControlParameter Name="Something" ConvertEmptyStringToNull="true" ControlID="tbSomething" />
    </SelectParameters>
</asp:ObjectDataSource>
残花月 2024-09-01 10:18:34

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

Aaronaught 是正确的。Null

是一个使用非常宽松的术语,不应该如此,并且很容易与“Nothing”混淆,“Nothing”在编程中使用要好得多。 textbox.text 值永远不会为 null,它会是“”。没有任何内容表明您是否已初始化字符串变量,所以

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 或“”是一个很好的经验法则。包含任何字符

显然,您在 sqlcommand 中使用的参数必须为 null 或不是这样...

在 VB 中:

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

从她那里,您可以将 SP 或 Inline SqlCommand 中的默认参数值设置为 Null,因此当它收到 Is 的参数时什么也没有,它会将存储过程中的参数恢复为 = Null

(如果您将 textbox.text 值直接发送到 SP 参数):

If (@Paramater = "") 
Begin

end
else
begin

end

"""Property Value
Type: System.String
The text displayed in the TextBox control. The default is an empty string ("")."""

Aaronaught is correct.

Null is a very loosely used term and shouldn't be, and can easily be confused with 'Nothing' which is far better to use in programming. A textbox.text value will never be null, it will be "". Nothing refers to whether you have initialized the string variable or not. 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

It's a general good rule of thumb to use string.empty or "" when referring to whether a string contains any characters

Obviously the Paramater you use in ur sqlcommand needs to be null or not so...

In VB:

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

From her you can set the default paramater value in SP or Inline SqlCommand to be Null, so when it recieves a paramter that Is Nothing, it reverts the paramater to = Null

In Stored Procedure (if you're sending the textbox.text value directly to a SP Paramater):

If (@Paramater = "") 
Begin

end
else
begin

end
櫻之舞 2024-09-01 10:18:34

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

Set the default parameter value in the ASP code to null.

我恋#小黄人 2024-09-01 10:18:33

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

来自 TextBox.Text 文档

财产价值
类型:System.String
TextBox 控件中显示的文本。 默认值为空字符串 ("")。

如果您想确保它以 null 的形式进入数据库,请在以下方式中将其转换:

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

An empty text box will contain string.Empty, not null.

From the TextBox.Text documentation:

Property Value
Type: System.String
The text displayed in the TextBox control. The default is an empty string ("").

If you want to make sure it goes to the database as null, then convert it on the way in:

string value = !string.IsNullOrEmpty(tb.Text) ? tb.Text: null;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文