我在 ASP 页面上有一系列控件。有些在 UpdatePanel 中,有些不在。
如果我将 XML 标记放在其中一个文本框中(例如“ <foo>
”),则 UpdatePanel 中的所有控件都不起作用。删除标签后,一切都很好。
我的“提交”按钮位于 UpdatePanel 中,并且仅当文本框中没有标签时才会点击 btnSubmit_Click 上的断点。
我是一名长期的 C# 开发人员,但对 ASP.NET 很陌生,所以可能会遗漏一些明显的东西……这不是我所期望的行为。
我在 ASP 页面上有一系列控件。有些在 UpdatePanel 中,有些不在。
如果我将 XML 标记放在其中一个文本框中(例如“ <foo>
”),则 UpdatePanel 中的所有控件都不起作用。删除标签后,一切都很好。
我的“提交”按钮位于 UpdatePanel 中,并且仅当文本框中没有标签时才会点击 btnSubmit_Click 上的断点。
我是一名长期的 C# 开发人员,但对 ASP.NET 很陌生,所以可能会遗漏一些明显的东西……这不是我所期望的行为。
如果您将 UpdatePanel 从页面中删除,您会发现回发导致了错误,因为 .NET 认为“<foo>”是在服务器上接受的具有潜在危险的数据位。在 StackOverflow 上查看这个问题。您看不到错误,因为错误页面 HTML 正在返回到 UpdatePanel 的 ajax 调用,而不是直接返回到您的浏览器,并且 UpdatePanel 不知道如何处理它。
您可以通过添加关闭检查
ValidateRequest="false"
到您的 aspx 文件顶部的 <@Page ... > 指令。或者您可以修改 web.config 以在您的 Web 应用程序中获得相同的效果。
您不能将标记放在文本区域中。您必须对 textarea 中的任何标记字符进行 HTML 转义,就像您必须对任何其他元素一样。
<textarea><foo> & <bar></textarea>
尽管实际上浏览器通常会理解您<
的意思并按原样显示任何字符,但它仍然是无效的 HTML 和格式不正确的 XML(可能这也是 ASP.NET 中问题的根源,尽管没有特定的代码很难说)。