3

複数行に設定してページをxhtmlとして提供する場合、ASPテキストボックスコントロールに問題があるようです。私が取り組んでいるプロジェクトでは、コンテンツネゴシエーションを使用して、aspページをそれをサポートするブラウザーにapplication / xhtml+xmlとして提供しています。問題は、asp textboxがテキストエリアをページにレンダリングするときに、テキストの先頭に改行を明示的に追加することです。テキストボックスのrenderメソッドの反映は次のようになります。

if (TextMode == TextBoxMode.MultiLine)
HttpUtility.HtmlEncode(Environment.NewLine + this.Text, (TextWriter) writer);

Firefoxとオペラがxhtmlコンテンツタイプでこれを提供されるとき、それらは改行をテキスト領域のテキストの一部として解釈するので、テキスト領域の先頭に余分な改行を取得します。

テキストボックスをサブクラス化してレンダリングをオーバーライドすることはできますが、このようなものを修正するには少しやり過ぎのようです。これを修正する別の方法はありますか?そして、asp textboxがとにかくこれを行う理由を誰かが知っていますか?

4

1 に答える 1

1

サブクラス化の代わりに、コントロールアダプターを使用するか、<textarea手動で作成してASP.NETにコントロール名属性を生成させることもできます。

ASP.NET WebFormsは、単に近視眼のためにこれを行っているのではないかと思います。とにかく将来はMVCなので、これがすぐに変更されることを期待しないでください。改行の本来の目的は、テキストエリアに何もないのではなく「値」を与えることだと思います(したがって、HTMLフォームの用語でテキストエリアを「成功」させる)。

ASP.NETで見られる奇妙な動作はこれだけではありません。の凶悪なHTMLフォーマット<head runat="server">もリストにあります。

于 2012-07-31T22:14:27.447 に答える