2017-04-27 4 views
0

で、私はhtmlファイルはHTMLが含まれています:私は、文字列やパスにHTMLに変換するには、次のコードを書くの背後にある.NETのC#コードでパスHTML文字列、.NETでのWebフォーム

<html> 
    <body> 
     <div class="infoLabel">*Your order has been placed in production queue</div><br /> 
     <div class="infoLabel">*The order confirmation will be delivered to you shortly</div> 
    </body> 
</html> 

〜へJavascript:

string path = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory.ToString(), "Templates/SiteNotifications/SavedQuote.html"); 
string htmlBody = File.ReadAllText(path); 
ScriptManager.RegisterStartupScript(Page, GetType(), "changePriceList" + Guid.NewGuid(),"displayViewDetails(" + htmlBody + ");", true); 

私はhtmlBodyが適切なエスケープ文字列を含んでいることを発見しました。スクリプトは:

function displayViewDetails(currentOrder) { 
    var w = window.open('_blank', "NewWindow", "width=" + width + ", height=" + height); 
    w.document.open(); 
    w.document.write(currentOrder); 
    w.document.close(); 
} 

しかし、デバッグするとき、私はJavaScriptがHTMLを解析するのにエラーがあることがわかりました。私はJavaScriptを解析するためにhtmlを渡す方法を修正する方法はありません。私は、既存の投稿が私の問題を解決するように見えないことを発見しました。誰でも助けることができますか?

エラースナップショットIEでデバッグするとき:\r\nenter image description here

+0

は、HTML文字列は、そのに渡されたときのように見えるん何 '文字列は「\ r \ nの \ rを\ nは \ rを\ nは

*Your order has been placed in production queue

\ rを\ nは
*The order confirmation will be delivered to you shortly
\ rを\ nはある – Sasang

+0

をdisplayViewDetails' \ r \ n \ r \ n " – DennisL

答えて

1

ファイルが解析されたときにそのが文字列に改行文字を追加するために問題が発生します。それらは有効なHTMLマークアップではありません。解決策は、javascript関数に渡す前に、新しい行の文字を削除することです。あなたはこのような何かを行うことができます。

string htmlBody = File.ReadAllText(path).Replace(Environment.NewLine, " "); 

注Environment.NewLineは、与えられたプラットフォーム用の改行文字で、.NETのドキュメントから:

含む文字列「\ rを\ n」は非のためにUnixプラットフォームの場合は "\ n"を含む文字列です。

+0

これは機能します!ありがとう!ところで、 "File.ReadAllText"にガベージコレクションが手動で必要かどうかは分かりますか?私は.close()メソッドを呼び出さなかったので。私は、msdnドキュメントを読んで、ファイルが閉じていることを確認します。 – DennisL

+0

問題ありません!はい、私はそれが完了した読書の後にそれを閉じると信じて、あなたはそれを自分で閉じる必要はありません。また、その答えが尋ねられた質問を解決した場合、チャンスを得るとき、それを受け入れたものとしてマークしてください。ありがとう。 – Sasang

関連する問題