0

我正在使用此方法在 Windows 临时目录上创建 PDF 文件:

System.IO.Path.GetTempPath()

而且我将字符串与 DateTime 连接起来,如下所示:

string pathPdf = string.Format(System.IO.Path.GetTempPath() + "detalle-{0}{1:yyyyMMddhhmmss}.pdf", txtFolio_detalle_consum.Text, DateTime.Now);

这是字符串的值:

C:\\Users\\Admin\\AppData\\Local\\Temp\\detalle-6020121112102343.pdf

但是,当我稍后在代码中尝试使用该值时,一些 c# 如何删除我以下列方式结束字符串的双反斜杠:

C:UsersAdminAppDataLocalTempdetalle-6020121112102343.pdf

没有反斜杠。

任何人都知道为什么 c# 会这样做?

提前致谢。

更新 我使用以下函数输出带有 Javascript 警报的变量:

protected void alerta(string msj)
{
    string script1 = @"<script type='text/javascript'>alert('" + msj + "');</script>";
    ScriptManager.RegisterStartupScript(this, typeof(Page), "Adv", script1, false);
}

我还传递了这个变量以在这样的查询字符串上使用它:

string scriptjs = string.Format("<script language='JavaScript'>window.open('emergentes_consum/vista_previa_imprimir.aspx?DocumentUrl={0}', '_blank', 'fullscreen=no')</script>",pathPdf);
    ScriptManager.RegisterStartupScript(this, typeof(Page), "Capturar_Emails", scriptjs, false);
4

2 回答 2

3

启动调试器,将变量添加到 Watch 窗口,然后逐步通过程序找到删除这些斜杠的代码。C# 本身并不这样做。

旁注 - 用于System.IO.Path.Combine连接路径(文件夹和文件)。

正如评论中所证明的那样,有问题的字符串被传递给 JavaScript alert - 所以解决方案是添加一个调用HttpUtility.JavaScriptStringEncode

于 2012-11-12T17:29:02.207 回答
1

那不是字符串的值。
这就是调试器显示字符串的方式。

如果在源代码中编写字符串文字,则需要对\s 进行转义,或者使用逐字字符串文字 ( @"C:\a\b")

于 2012-11-12T17:28:22.300 回答