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# が次の方法で文字列を終了する 2 つのバックスラッシュを削除する方法がいくつかあります。

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

デバッガーを起動し、ウォッチ ウィンドウに変数を追加し、プログラムを段階的に実行して、これらのスラッシュを削除するコードを見つけます。C# はそれ自体では行いません。

補足 -System.IO.Path.Combineパス (フォルダーとファイル) を連結するために使用します。

コメントで判明したように、問題の文字列は JavaScript アラートに渡されたので、解決策は呼び出しを追加することでしたHttpUtility.JavaScriptStringEncode

于 2012-11-12T17:29:02.207 に答える
1

それは文字列の値ではありません。
これが、デバッガーが文字列を表示する方法です。

ソース コードで文字列リテラルを記述する場合は、\s をエスケープするか、逐語的な文字列リテラル ( @"C:\a\b")を使用する必要があります。

于 2012-11-12T17:28:22.300 に答える