我遇到的问题是关于在服务器上生成的文件,.NET 代码正在调用 Javascript 方法将文件下载到客户端,但如果文件名有撇号则失败(').
例如:
如果 ExportExcelFileName = "C:\HereIsMyFile.xls"
它工作正常。
但是,如果
ExportExcelFileName = "C:\Here'sMyFile.xls"
它抛出评估失败的异常。
我尝试添加 [.Replace("'", "\\'")]
和 [.Replace("'", "%27")]
但没有运气......
string script = string.Format("DownLoadFile('{0}')", e.Result.ExportExcelFileName).Replace('\\', '/');
HtmlPage.Window.Eval(script);
最佳答案
我想通了:
当我尝试这样做时:
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# - 文件名路径中撇号代码的特殊字符替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21439761/