c# - 文件名路径中撇号代码的特殊字符替换

标签 c# javascript .net silverlight

我遇到的问题是关于在服务器上生成的文件,.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/

相关文章:

javascript - 为什么是!!在检查对象是否为真时更可取?

javascript - 如何上传/发布多个 Canvas 元素

c# - Renci SSH.NET : can create symlink, 但删除符号链接(symbolic link)失败,为什么?

javascript - 如何在 Three.js 中使用鼠标旋转对象?

c# - 在 linq foreach 中调用方法 - 有多少开销?

c# - 为多个设备创建相同的访问 token

c# - Regfree COM 事件从其他线程失败

c# - 如何使用 NSubstitue 框架从 Controller 类模拟基方法

c# - 为什么调用 PerformanceCounter 很慢?

c# - 命名信号量名称的最大长度是多少?