当设置为多行并将页面作为xhtml提供时,ASP文本框控件似乎存在问题。我正在开发的项目使用内容协商将asp页面作为application / xhtml + xml提供给支持它的浏览器。问题是当asp文本框向页面呈现textarea时,它明确地为文本添加换行符。文本框的渲染方法的反映如下所示:
if (TextMode == TextBoxMode.MultiLine)
HttpUtility.HtmlEncode(Environment.NewLine + this.Text, (TextWriter) writer);
当使用xhtml内容类型为firefox和opera提供服务时,他们将换行符解释为textarea中文本的一部分,因此我在文本区域的开头部分获得了额外的换行符。
我可以子类化文本框并覆盖渲染,但这似乎有点矫枉过正,以纠正这样的事情。有没有其他方法来纠正这个?有谁知道为什么asp文本框会这样做呢?
答案 0 :(得分:1)
子类化的替代方法是使用控件适配器,或者手动编写<textarea
并让ASP.NET为您生成控件名称属性。
我怀疑ASP.NET WebForms只是因为短视而这样做。无论如何,未来都是MVC,所以不要指望这很快就会改变。我怀疑换行的最初目的是给textarea一个“值”而不是什么(因此使得textarea以HTML形式表示“成功”)。
这不是您在ASP.NET中看到的唯一奇怪的行为。 <head runat="server">
的残酷HTML格式也在列表中。