Функция работает с двойными кавычками, но не с одинарными кавычками - PullRequest
0 голосов
/ 24 января 2020

Я разрабатываю страницу, используя веб-формы, и у меня проблема с моей страницей 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);
        }

1 Ответ

0 голосов
/ 24 января 2020

Это не работает, потому что одна из ваших строк exp1 или exp2 содержит простую кавычку. Поэтому, когда вы отправляете свой скрипт с использованием RegisterStartupScript, у вас может быть ошибка Javascript. Проверьте консоль

Попробуйте использовать \ "

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