我需要将来自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?
处理'和其他特殊字符的最佳方式是什么?
答案 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。