C# 文件名路径中撇号代码的特殊字符替换
我遇到的问题与服务器上生成的文件有关,.NET代码调用Javascript方法将文件下载到客户端,但如果文件名有撇号('),则会失败 例如: 如果ExportExcelFileName=“C:\HereIsMyFile.xls”正常工作。 然而,如果 ExportExcelFileName=“C:\Here'sMyFile.xls” 它抛出一个评估异常的失败 我尝试添加C# 文件名路径中撇号代码的特殊字符替换,c#,javascript,.net,silverlight,C#,Javascript,.net,Silverlight,我遇到的问题与服务器上生成的文件有关,.NET代码调用Javascript方法将文件下载到客户端,但如果文件名有撇号('),则会失败 例如: 如果ExportExcelFileName=“C:\HereIsMyFile.xls”正常工作。 然而,如果 ExportExcelFileName=“C:\Here'sMyFile.xls” 它抛出一个评估异常的失败 我尝试添加[.Replace(“'”,“\\'”)]和[.Replace(“'”,“%27”)],但没有成功 string script
[.Replace(“'”,“\\'”)]
和[.Replace(“'”,“%27”)]
,但没有成功
string script = string.Format("DownLoadFile('{0}')", e.Result.ExportExcelFileName).Replace('\\', '/');
HtmlPage.Window.Eval(script);
一个简单的方法会像这样工作吗
private static string quoteReplace(string psString)
{
return psString.Replace("'", "");
}
尝试对文件名使用URI转义:
Uri.EscapeDataString(filePathHere)代码>。看
另请参见:我找到了答案:
当我尝试这样做时:
string script = string.Format("DownLoadFile('{0}')", e.Result.ExportExcelFileName).Replace('\\', '/').Replace("'", "\\'");
HtmlPage.Window.Eval(script);
它还替换了DownloadFile(“{0}”)的javascript命令中的单引号
所以我只是先做了替换,就像这样:
var escapedFileName = ((e.Result.ExportExcelFileName).Replace('\\', '/')).Replace("'", "\\'");
string script = string.Format("DownLoadFile('{0}')", escapedFileName);
HtmlPage.Window.Eval(script);
为什么[将单个(')替换为(“”)]C:\Here“sMyFile.xls”会起作用?这是Javascript特有的吗?对不起,这是一个输入错误。它应该什么都不做来代替它