Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# javascript单报价问题_C#_Javascript_Asp.net - Fatal编程技术网

C# javascript单报价问题

C# javascript单报价问题,c#,javascript,asp.net,C#,Javascript,Asp.net,我正在创建asp.net c#web应用程序。 我在gridview的每一行的第一列上都有一个linkButton(lnkDelete)。 此外,我还在GridView的“RowDataBound”事件中动态地向该链接按钮添加一个属性。 具体如下: lnkDelete.Attributes.Add("onclick", "javascript:return confirm('Are you sure you want to delete this Product :" +

我正在创建asp.net c#web应用程序。 我在gridview的每一行的第一列上都有一个linkButton(lnkDelete)。 此外,我还在GridView的“RowDataBound”事件中动态地向该链接按钮添加一个属性。 具体如下:

  lnkDelete.Attributes.Add("onclick", "javascript:return confirm('Are you sure you want to   delete this Product :" +
                    DataBinder.Eval(e.Row.DataItem, "ProductName") + "')");
现在我要做的是,当用户点击链接按钮时,会弹出一个javascript确认弹出窗口,询问“您确定要删除此产品吗?”。 一切正常。但当产品名称与sngle报价一起出现时,问题就出现了。 比如:产品一。 当我单击lnkDelete时,ErrorConsole(javascript)中出现语法错误,错误为:(非法字符) 我知道问题在于单一报价

请告诉我需要对我的上述代码进行哪些更改。
我希望我说得很清楚。

在单引号中添加
\
怎么样

DataBinder.Eval(e.Row.DataItem, "ProductName").ToString.Replace("'", "\\'")
使用

而不是
DataBinder.Eval(e.Row.DataItem,“ProductName”)

你可以用


HttpUtility.HtmlEncode(DataBinder.Eval(e.Row.DataItem,“ProductName”).ToString())
是否尝试转义字符串

如果您有一个转义字符串,那么您可以使用javascript进行转义

lnkDelete.Attributes.Add("onclick", "javascript:return confirm('Are you sure you want to  delete this Product :' + unescape(\'" + escapedString + "\'))");

我在我的一个自动搜索工具项目中做了类似的事情。以下是您可以尝试的内容:

protected void grdKeywords_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            LinkButton linkDeleteButton = e.Row.FindControl("lnkdel") as LinkButton;
            Label lblGridKeyword = e.Row.FindControl("lblGridKeyword") as Label;
            TextBox txtGridBox = e.Row.FindControl("txtGridKeyword") as TextBox;

            if (lblGridKeyword != null)
            {
                if (lblGridKeyword.Text.Contains("'"))
                {
                    lblGridKeyword.Text = lblGridKeyword.Text.Replace("'", "'");

                }
            }

            if (txtGridBox != null)
            {
                if (txtGridBox.Text.Contains("'"))
                {
                    txtGridBox.Text = txtGridBox.Text.Replace("'", "`");
                }
            }

            if (txtGridBox == null)
                linkDeleteButton.Attributes.Add("onclick", "javascript:return confirm('Are you sure about deleting keyword: " + lblGridKeyword.Text + " ?')");
            else if (lblGridKeyword == null)
                linkDeleteButton.Attributes.Add("onclick", "javascript:return confirm('Are you sure about deleting keyword: " + txtGridBox.Text + " ?')");




        }
    }

lblGridKeyword是保存包含单引号的数据的标签。我在RowDataBound时使用了“替换”。这对我很有用。

您的产品名称是否包含一个报价?我觉得这没问题。请尝试使用
Replace
方法对引号进行双引号引用-即
DataBinder.Eval(e.Row.DataItem,“ProductName”)。Replace(“,”)
@Tim,我想您的意思是\\”
DataBinder.Eval(e.Row.DataItem,“ProductName”)。替换(“'”,“\\\”)
@AdamPlocher-您是对的。我已经有一段时间没有使用客户端JavaScript了,忘记了转义字符。理论很好,实现很差:)@Tim我试过了,但还是出现了同样的错误。我也试过了你的选项,效果很好。但当产品名称包含反斜杠时,在确认弹出窗口中给出错误的产品名称,如:'\\Prd。它给出(你确定要删除此产品:'\Prd)与“\\prdony”不同的是,如果您有一个单引号
并使用
HttpUtility.HtmlEncode
,它将变成一个
&39
,如果显示给客户端。