【问题标题】:convert an empty string (from textbox) to null using ASP.NET使用 ASP.NET 将空字符串(来自文本框)转换为 null
【发布时间】:2012-09-14 13:50:34
【问题描述】:

如果我没有在其中一个文本框中输入任何内容,ASP.NET 不能告诉一个空文本框并将其视为 null...所以请任何人帮助我如何检测一个空文本框并将其设置为 null

我知道这段代码运行良好

If MUSIC_TITLE.Text.Trim() = "" Then

MUSIC_TITLE.Text = Nothing

End If

但我不能使用,因为我的应用程序中有很多表单,所以我需要一些东西或 ASP.NET 中存在可以处理此问题的任何函数

这就是在requet sql server中插入

"insert into Reunion values(" & Convert.ToInt32(ID_Reunion.Text) & ",'" & d.ToString("MM/dd/yyyy") & "'," & Convert.ToInt32(ID_Membre.Text) & ",'" & Type_Reunion.Text & "','" & Session("Nom_GIAC") & "')"

和tnks

【问题讨论】:

  • 为什么要设置为Nothing?无论如何,它都会以string.Empty 的形式返回。在 ASP.NET 的 Text 属性中,null 和空属性之间不能有区别。

标签: asp.net ado.net textbox webforms string


【解决方案1】:

这听起来像是在尝试将文本框值直接存储在数据库中。

不要这样做。如果您还没有,请了解 SQL Injection 的高风险安全威胁并参数化您的 INSERTS 和 UPDATES。

在设置参数之前,如果需要,可以将空字符串转换为Nothing

Dim musicTitle as String = _
    If(String.IsNullOrWhiteSpace(MUSIC_TITLE.Text), Nothing, MUSIC_TITLE.Text)

【讨论】:

  • 我知道 SQL 注入,但我已经在表单中的每个控件中进行了控件验证
  • @Yassineedouiri 很好。而且我敢肯定,您还考虑过有人修改 HTTP 请求,甚至通过 fiddler 或其他不关心客户端验证的工具发送假请求的可能性。 总是在服务器上验证。 NEVER 直接将任何用户输入发送到数据库。无论采用何种客户端验证,恶意用户始终可以禁用它。
  • 能否请您发给我任何可以解决注入问题的教程,因为我的数据库中有一些文本框用作字符串参数,所以我不需要对其进行任何控制验证.. 所以我'我想知道是否有任何方法可以处理这种混乱:'(
  • 每件事都感谢我的兄弟
【解决方案2】:

在你的插入 sp 中应该是这样的:

create procedure Insert(@test varchar(50)=NULL)
as
    begin
        update foo set testCol=@test
    end

在c#中,调用sp并添加参数时,使用下面的代码:

if(txt.Text!=String.Empty)
{
    cmd.Parameters.Add("@test",SqlDBType.Varchar,20).Value=txt.Text;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 2022-01-08
    • 2020-06-20
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    相关资源
    最近更新 更多