Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 文件名路径中撇号代码的特殊字符替换_C#_Javascript_.net_Silverlight - Fatal编程技术网

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

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

我遇到的问题与服务器上生成的文件有关,.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);

一个简单的方法会像这样工作吗

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特有的吗?对不起,这是一个输入错误。它应该什么都不做来代替它