如果filename有单引号C#javascript没有执行

时间:2013-08-23 20:10:51

标签: c# javascript asp.net

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

当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);                                      
}                                       

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

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

3 个答案:

答案 0 :(得分:1)

您在JavaScript中以引号分隔的字符串嵌入标题和网址,因此您需要将其转义。

title = title.Replace("'","\\'");
url = url.Replace("'","\\'");

答案 1 :(得分:0)

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

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

尝试将'替换为%27,这是[{1}}的标准百分比编码

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

答案 2 :(得分:0)

使用Uri.EscapeDataString(yourLinkHere);。请参阅Uri.EscapeDataString on MSDN