函数适用于双引号,但不适用于单引号

Function works with double quotes but not with single quotes

提问人:magix 提问时间:1/24/2020 更新时间:1/24/2020 访问量:126

问:

我正在使用 Web 表单开发一个页面,但我的 aspx.cs 页面有问题。我有一个带有值的树视图,这些值应该用作 gridview(sqlServer 数据库)的过滤器。我将选中的节点保存在一个字符串中,并且代码在双引号下工作正常,但是当我使用单引号(我需要)时,当我运行它时没有任何反应。

这是我正在运行的代码。我使用 ClientScript 只是为了查看我保存的字符串。下面的代码不起作用,如果我将“替换为”,它可以工作,但我不能使用它来过滤sql表。我试过替换,试过使用字符分隔符,放两个单引号,似乎没有任何效果。有什么想法吗?

protected void Submit(object sender, EventArgs e)
        {
            string exp1 = string.Empty;
            foreach (TreeNode node in Source_TreeView.CheckedNodes)
            {
                if (node.Checked)
                {
                    if (exp1 != string.Empty)
                    {
                        exp1 += " OR ";
                    }
                    exp1 += "Source=" + "'" + node.Value + "'";
                }
            }
            if (exp1 != string.Empty)
            {
                exp1 = "(" + exp1;
                exp1 = exp1 + ")";
            }
            exp1 = exp1.Replace("'", "''");
            string exp2 = string.Empty;
            foreach (TreeNode node in Sink_TreeView.CheckedNodes)
            {
                if (node.Checked)
                {
                    if (exp2 != string.Empty)
                    {
                        exp2 += " OR ";
                    }
                    exp2 += "Sink=" + "'" + node.Value + "'"; 
                }
            }
            if (exp2 != string.Empty)
            {
                exp2 = "(" + exp2;
                exp2 = exp2 + ")";
            }
           ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('" + exp1 + exp2 + "');", true);
        }
C# asp.net WebForms 引用

评论

1赞 A_Sk 1/24/2020
exp1 = exp1.Replace("'", "''");为什么需要这行代码?
0赞 magix 1/24/2020
这只是我绝望的尝试之一。我尝试使用双引号,然后用单引号替换它,但没有用。在这里,我只是在尝试它是否适用于两个单引号。
0赞 A_Sk 1/24/2020
it didn't work这是什么意思?

答:

1赞 Stefano Martines 1/24/2020 #1

它不起作用,因为您的字符串 exp1 或 exp2 之一包含一个简单的引号。因此,当您使用 RegisterStartupScript 发送脚本时,可能会出现 Javascript 错误。检查控制台

尝试使用 \”

string yourScript  = string.format("alert(\"{0} {1}\");", exp1, exp2)
ClientScript.RegisterStartupScript(this.GetType(), "alert", yourScript, true);