当设置为多行并将页面作为 xhtml 提供时,ASP 文本框控件似乎有问题。我正在从事的项目使用内容协商将 asp 页面作为 application/xhtml+xml 提供给支持它的浏览器。问题是当 asp 文本框向页面呈现一个文本区域时,它明确地在文本前面加上一个换行符。文本框的呈现方法的反射(reflect)如下所示:
if (TextMode == TextBoxMode.MultiLine)
HttpUtility.HtmlEncode(Environment.NewLine + this.Text, (TextWriter) writer);
当 firefox 和 opera 使用 xhtml 内容类型时,它们将换行符解释为文本区域中文本的一部分,因此我在文本区域的开头得到额外的换行符。
我可以将文本框子类化并覆盖渲染,但是纠正这样的事情似乎有点矫枉过正。还有另一种方法可以纠正这个问题吗?有谁知道为什么 asp 文本框仍然这样做?
最佳答案
子类化的替代方法是使用控件适配器,或编写 <textarea
手动获取 ASP.NET 为您生成控件名称属性。
我怀疑 ASP.NET WebForms 这样做只是因为目光短浅。不管怎样, future 是 MVC,所以不要指望这会很快改变。我怀疑换行符的最初目的是给 textarea 一个“值”而不是什么都没有(从而使 textarea 用 HTML 形式的说法“成功”)。
这不是您在 ASP.NET 中看到的唯一奇怪行为。 <head runat="server">
的糟糕 HTML 格式也在名单上。
关于c# - Asp 文本框 xhtml 和额外的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11749246/