【问题标题】:Asp textbox xhtml and extra newlineAsp 文本框 xhtml 和额外的换行符
【发布时间】:2012-07-29 18:12:42
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# asp.net xhtml textbox


    【解决方案1】:

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

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

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

    【讨论】:

    • 我认为我们将采用控制适配器方法,因为它将适用于我们所有现有的文本区域。缺点是所有的渲染仍然需要重新实现,但我看不出有什么办法。以前从未听说过控制适配器,感谢您指出。
    猜你喜欢
    • 1970-01-01
    • 2021-02-12
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    相关资源
    最近更新 更多