【问题标题】:ASp.net Webform multiline textbox adds line break on page load automaticallyASp.net Webform 多行文本框在页面加载时自动添加换行符
【发布时间】:2023-03-19 14:39:02
【问题描述】:

从过去一/两周开始,我注意到我在基于 asp.net 网络表单的网站中使用的任何多行文本框都会自动向文本框添加换行符。

在我几乎所有的 asp.net webform 网站都面临这个问题之前,这从未发生过

<textarea name="txtComment" rows="2" cols="20" id="txtComment" tabindex="4" class="comment-box">
</textarea> 

我不确定为什么会这样。当我们更新页面时它会变得很糟糕,如果我们不手动删除换行符,它将继续向多行文本框添加换行符。我不确定这个问题是否是由于某些 Windows 更新或浏览器造成的。它发生在 Firefox 中,后来我在 Chrome 中发现了同样的情况?

不知道为什么会这样

示例:代码

    <asp:TextBox ID="TextBox2" runat="server" TextMode="MultiLine" Rows="3"> Line </asp:TextBox>
</div>
</form>

HTML 渲染输出

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title></head>
<body>
    <form method="post" action="./TESTMultiline.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNjQ0NTE4MDYwZGRecdSIl8wWZzLW33b1SXrfQmgMkA==" />
</div>

    <div>
        <input name="TextBox1" type="text" id="TextBox1" />

        <textarea name="TextBox2" rows="3" cols="20" id="TextBox2">&#13;&#10; Line </textarea>
    </div>

<div class="aspNetHidden">

    <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="F8195D5B" />
    <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEdAAN9qVvxr9edjD9ICF1fyY9rESCFkFW/RuhzY1oLb/NUVB2nXP6dhZn6mKtmTGNHd3PbNvMJfATDdpnltdJAG8xg/EABZA==" />
</div></form>

<!-- Visual Studio Browser Link -->
<script type="application/json" id="__browserLink_initializationData">
    {"appName":"Firefox","requestId":"b33e31c27a494a9c8d0d82b3f5432ca7"}
</script>
<script type="text/javascript" src="http://localhost:61571/7d590f801da8489ebffe28d952f8f4af/browserLink" async="async"></script>
<!-- End Browser Link -->

</body>
</html>

输出

【问题讨论】:

  • 你能粘贴整个aspx吗?
  • 源代码还是 HTML 源代码?
  • HTML.......
  • @RoyiNamir,我在此创建了一个测试页面,您可以在浏览器中看到代码、HTML 和屏幕截图页面
  • &amp;#13;&amp;#10; 换行...删除它

标签: c# asp.net webforms


【解决方案1】:

问题与文本框控件的呈现方式有关。更改 web.config 中 controlRenderingCompatibilityVersion 的值对我有用:

controlRenderingCompatibilityVersion=4.5

信息来自问题Extra characters added to multiline textbox,来自JTapp/jmoreno的回答。

【讨论】:

  • 谢谢,我一直在努力解决这个问题,因为我无法找到问题的解决方案或路由原因,只需将其添加为 &lt;pages controlRenderingCompatibilityVersion="4.5" &gt; 已解决的问题。
  • 你知道为什么在更高版本的 asp.net 中 textareas 会呈现错误吗?有没有办法解决问题而不是解决问题?这只是从 asp.net 表单迁移的另一个原因吗?
【解决方案2】:

只需从该行中删除 &amp;#13;&amp;#10;

&lt;textarea name="TextBox2" rows="3" cols="20" id="TextBox2"&gt; Line &lt;/textarea&gt;

【讨论】:

  • 对不起,我没有注意到这条评论
  • @Snufkin 这让我想到了 css :after/before{ content:...} 或类似的东西
  • 我尝试测试页面,删除&amp;#13;&amp;#10;后没有出现问题
  • 我在其他网站上使用的修复是TextBox2.Text = TextBox2.Text.Trim();,但这不是解决方案。使用这种方法,它只会添加一个换行符,如果我删除这样的引用,那么它将为每个回发添加一个换行符。这意味着 N 个回发的 N 个换行符
【解决方案3】:

两种选择:

  1. 删除源代码中“_行”之前的空格:可能是一个不常见的字符“隐藏”在那里
  2. 尝试一起删除文本 - 并将其添加到后面的代码中:TextBox2.Text = "Line";

已编辑:

  1. 打开 Chrome 开发工具并检查影响此标记的所有 css/类/样式

【讨论】:

  • 我已经尝试了所有这些技巧,我删除了整个文本框,创建了新的测试页面,但它不断向多行文本框添加换行符
  • 只是提到这从过去几周开始在旧网站上发生,因为这在以前没有注意到......使用引导程序的 Asp.net webform 网站没有这个问题。即使是示例中所示的简单页面也存在此问题。所以我不确定为什么或是什么原因造成的。
  • 既然您已经提到了引导程序,看起来这是一个“中心”问题:因为您有 3 行 - 一些样式将文本放在中间。尝试将其更改为 5 行并查看结果:)
  • 你应该打开 chrome 开发工具并检查所有影响这个标签的类/样式
  • 这很好,但在示例中我没有使用任何 css。它只是带有两个控件的简单表单,所以我不认为这是 CSS 问题。如果是 css 那么为什么它在过去几周开始出现这个问题。没有令人沮丧...我在想可能是由于一些 Microsoft 更新?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多