3

当设置为多行并将页面作为 xhtml 提供时,ASP 文本框控件似乎存在问题。我正在处理的项目使用内容协商将 asp 页面作为 application/xhtml+xml 提供给支持它的浏览器。问题是当 asp textbox 向页面呈现一个 textarea 时,它显式地在文本前面加上一个换行符。文本框的渲染方法的反射如下所示:

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

当 firefox 和 opera 使用 xhtml 内容类型提供此服务时,它们会将换行符解释为 textarea 中文本的一部分,因此我会在文本区域的开头获得额外的换行符。

我可以子类化文本框并覆盖渲染,但这似乎有点矫枉过正。有没有另一种方法来纠正这个问题?有谁知道为什么 asp 文本框会这样做吗?

4

1 回答 1

1

子类化的替代方法是使用控件适配器,或者<textarea手动编写并让 ASP.NET 为您生成控件名称属性。

我怀疑 ASP.NET WebForms 这样做只是因为目光短浅。无论如何,未来是 MVC,所以不要指望这会很快改变。我怀疑换行符的最初目的是给 textarea 一个“值”而不是什么都没有(从而使 textarea 在 HTML 表单中“成功”)。

这不是您在 ASP.NET 中看到的唯一奇怪行为。残暴的 HTML 格式<head runat="server">也在列表中。

于 2012-07-31T22:14:27.447 回答