2

我在 updatePanel 中有一个多行文本框。用户可以在其中输入他需要的任何注释。如果他在尖括号内输入电子邮件地址,那么在提交或取消时,我会收到PageRequestManagerServerErrorException of 500

myaddress.xxx.ca 如果他在这些注释中输入了不带括号的电子邮件地址,那么就没有错误

文本框也应该允许他输入任何他想要的东西,这真的只是为了他的笔记。

我已经尝试RequestValidation = "false"页面指令中,但这不起作用

任何建议,将不胜感激。

布莱恩

4

1 回答 1

0

我假设您至少使用 .Net 4.0?我根据你的问题做了一个小例子,并注意到了同样的行为。幸运的是,我找到了一个快速的解决方案(甚至在 Stackoverflow 上 - Allow html in asp.net textboxes)。

aspx

<%@ Page Language="C#" AutoEventWireup="true" ValidateRequest="false" CodeFile="commonQuestions.aspx.cs" Inherits="commonQuestions" %>
 .....
<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:TextBox ID="TextBox1" runat="server" Height="81px" TextMode="MultiLine" Width="264px"></asp:TextBox>
            <br />
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Send" />
        </ContentTemplate>
    </asp:UpdatePanel>
</form>

代码隐藏

protected void Button1_Click(object sender, EventArgs e)
{
    // do something
    Debug.WriteLine("Text: " + TextBox1.Text);
}

添加到web.config

<httpRuntime requestValidationMode="2.0" />

在这里,我们从 MS那里得到了一个很好的解释,指的是 ASP.Net 4 中的变化

因此,以前未触发错误的请求现在可能会发生请求验证错误。要恢复到 ASP.NET 2.0 请求验证功能的行为,请 在 Web.config 文件中添加设置(见上文) :

于 2012-10-10T21:08:39.447 回答