1

私は最初から ASP.NET のコードを書いてきましたが、今日、これまでに見たことのないものに遭遇しました。通常、「\r\n」を期待して、C# で改行を探しました (たとえば、テキストエリアから ASP.NET に投稿された場​​合)。現在、私は MVC フレームワークを使用しており、テキストエリアから送信されるテキストには、改行用の "\n" が含まれています。

改行を正規化する古い学校の TextBox コントロールで何かが起こっていますか? MVC はフォームデータをそのまま使用するだけなので、これは正常ですか? いくつかの洞察を得たいと思います。

4

3 に答える 3

7

実際の改行シーケンスはブラウザーごとに異なることに気付きました。

ページに複数行のテキストエリアがあり、ページが送信された場合:

IE は改行を示すために "\r\n" を返します。この場合、FF は "\n" を返します。

2006 年末にどこかでテストしたので、今は違うかもしれません。

WebForms と MVC との関係はないと思います。どちらも、送信された入力を処理してそのまま返すだけです。

これらの文字を何らかの方法で処理して置換したい場合は、長いものから短いものへの順序で行うのが理にかなっています。

string userText = form["Text"];
userText = userText.Replace ("\r\n", "<br/>").Replace ("\r", "<br/>");
于 2009-05-31T19:11:10.077 に答える
4

\n は、*nix スタイルのシステムの行末バリアントです。\r\n は Windows 固有の行末動作です。

行末をチェックし、インターフェイスを Windows 以外の環境に公開する場合は、\r\n だけでなく \n だけもチェックしてください。

詳細な背景については、Wikipedia のNewlineの記事をご覧ください。

于 2009-05-31T19:09:26.103 に答える
1

私はEnvironment.NewLineを使用しています:

string userText = form["Text"];
userText = userText.Replace (Environment.NewLine, "<br />")

いくつかの改行テキストエリアの癖に関する@Haackedの投稿もご覧ください。

于 2009-08-04T18:51:40.767 に答える