0

我需要将一个 URL 从 C# 传递给 javascript。问题是如果文件名有单引号,它不会执行 javascript。当我使用 HttpUtility.HtmlEncode(fileNameWithoutEx) 时,它会执行 javascript,但如果文件名是“大卫出生证明的副本”,那么 URL 会转换为 ?View.aspx?length=60&ext=pdf&file=大卫的副本' 出生证明。

当 View.aspx 尝试获取查询字符串文件时,即;文件名,它被设置为“大卫的副本”而不是“大卫的出生证明的副本”。因为 & 它没有得到查询字符串的其余部分。

 if (System.IO.File.Exists(fileLocation)) {
            string fileNameWithoutExt = System.IO.Path.GetFileNameWithoutExtension(fileLocation);
            string fileExtension = System.IO.Path.GetExtension(fileLocation).Replace(".", "");
            string title = System.IO.Path.GetFileNameWithoutExtension(fileName);
            string url = "View?length=" + 60+ "&ext=" + fileExtension + "&file=" + fileNameWithoutExt;
            ScriptManager.RegisterStartupScript(this, GetType(), "ShowPDF", "$(document).ready(function(){ShowPDFDocument('" + title + "', '" + url + "');});", true);                                      
}                                       

如何将带有单引号的 url 发送到 javascript?

处理 ' 和其他特殊字符的最佳方法是什么?

4

3 回答 3

1

使用Uri.EscapeDataString(yourLinkHere);. 请参阅MSDN 上的 Uri.EscapeDataString

于 2013-08-23T20:25:28.333 回答
1

您在 JavaScript 中将标题和 URL 嵌入引号分隔的字符串中,因此您需要对它们进行转义。

title = title.Replace("'","\\'");
url = url.Replace("'","\\'");
于 2013-08-23T20:21:10.190 回答
0

您可以尝试百分比代码。我也建议使用%20代替空格。您可以选择文件名本身或在代码中路由到它的方式。

urlstring.replace("'", "%27")

尝试'%27标准百分比编码替换你的'

应替换具有保留用途的字符以保证在所有环境中的功能。您可以在此处查看列表并阅读此内容。

于 2013-08-23T20:15:01.323 回答