2011-07-20 2 views
0

テキストエリアのテキストをデータベースに保存しています。このテキストには、改行、特殊文字などを含めることができます。ただし、response.writeを使用して表示するときは、テキストエリアコントロールに表示されているかのように表示されます。私がこれをやりたいのは、ユーザーに印刷ビューフォームを与えたいからです。以下の解決法は機能しません。Response.WriteテキストをデータベースからHTMLとして出力

foreach (DataRow row in dview.Table.Rows) 
{ 
Response.Write("<tr>"); 
        Response.Write(String.Format("<td>{0}<br/><br/></td>", row[1].ToString().Replace("\n", "<br/>"))); 
        Response.Write("</tr>"); 

おかげ

答えて

1

は、そのようにしないでくださいASP.NET/C#

例えばを使用すると、引用符や記号が含まれている場合は特に、問題に実行されます。

店このようなデータ:

HttpUtility.HtmlEncode("<p>Lorem ipsum ...</p>"); //your HTML to encode goes here 

そして、このようにそれを取得:

myPlaceHolder.Text = HttpUtility.HTMLDecode(myData); 

ここHTMLEncode/Decode

+0

入力されたデータにHTMLが含まれていないことがあり、ユーザーがHTMLで入力したときにそのデータを翻訳する必要があることがあります。あなたはそれから何を提案しますか?データ入力の概念に反してデータ入力を誤っていますか? – BradLaney

+0

私は分かりません。 'HttpUtility.HtmlDecode(HttpUtility.HtmlEncode(myString))= myString' 常に。したがって、HTMLを入力しなくても、データは入力時と同じに戻ります。 –

+0

ユーザはプレーンテキストを入力します。 WYSIWYGエディタではありません。彼らは「Hello world」と入力します。 「Hello world」と表示したいとします。あなたの方法は、出力が入力と一致する場合は問題ありませんが、出力形式が入力と一致しない場合は、データを切り詰めて機能させる必要があります。ポスターは、入力ではなく出力時に書式を変更する方法を要求しています。 – BradLaney

1
foreach (DataRow row in dview.Table.Rows) 
{ 
Response.Write("<tr>"); 
       Response.Write(String.Format("<td>{0}<br/><br/></td>", row[1].ToString().Replace(Environment.NewLine, "<br/>"))); 
       Response.Write("</tr>"); 

についてもう少し情報が "\ n" を使用しないでくださいです常にEnvironment.NewLineを使用してください。

1

<pre></pre>ブロック内に出力を表示することができます。複数の空白、改行など、すべての空白を保持します。

データの角かっこは出力HTMLを壊さないようにHTMLエンコードを推奨します。

関連する問題