c# - Asp 文本框 xhtml 和额外的换行符

标签 c# asp.net xhtml textbox

当设置为多行并将页面作为 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/

相关文章:

java - 多次重复使用同一页面

c# - 在 Windows 窗体中选择和更新数据表

c# - 解析 float 的字符串

c# - ServiceStack Ormlite : System. InvalidProgramException JIT 编译器遇到内部限制

c# - 在 RowCommand 的嵌套 GridView 中从 DropDownList 中检索值

c# - Asp.net Identity 2.0 自定义登录方法

c# - MS Bot 获取当前页面 url

javascript - 如何使用父页面 css 为 iframed 页面内容提供样式?

html - 多语言标记验证器

c# - 处理 C# 表达式树中嵌套对象的空值