我创建了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引用时会出现问题。 喜欢:Product'One。 当我点击lnkDelete并且错误是:(非法字符)时,ErrorConsole(javascript)中出现语法错误 我知道问题出在单引号上。
请告诉我上述代码中需要进行哪些更改。 我希望我很清楚。
答案 0 :(得分:5)
如何在单引号中添加\
?
DataBinder.Eval(e.Row.DataItem, "ProductName").ToString.Replace("'", "\\'")
答案 1 :(得分:0)
而不是DataBinder.Eval(e.Row.DataItem, "ProductName")
您可以使用
HttpUtility.HtmlEncode(DataBinder.Eval(e.Row.DataItem, "ProductName").ToString())
答案 2 :(得分:0)
你试过逃避字符串吗?
如果您有转义字符串,则可以使用javascript进行转义。
lnkDelete.Attributes.Add("onclick", "javascript:return confirm('Are you sure you want to delete this Product :' + unescape(\'" + escapedString + "\'))");
答案 3 :(得分:0)
我在我的一个搜索项目自动化工具中做了类似的事情。您可以尝试以下方法:
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时使用'替换了它。这对我有用。