我在ajax更新面板中使用了一个asp.net文本框。如果我在文本框中输入&#并按“保存”按钮,则会出现javascript错误
Sys.WebForms.PageRequestManagerServerErrorException:在服务器上处理请求时发生未知错误。从服务器返回的状态代码是:500
请帮我解释为什么会出现此错误?
答案 0 :(得分:7)
可能ASP.NET Request Validation已启动并检测到潜在危险请求(文本框值中的&#)。这会导致抛出HttpRequestValidationException
- 因此UpdatePanel返回500个HTTP代码。我看到它的方式有两种方法可以解决这个问题:
禁用请求验证:
<%@ Page ValidateRequest="false" %>
如果您选择禁用请求验证,请确保此文本框的值不会逐字输出到应用程序中的其他位置。确保在显示时使用HttpUtility.HtmlEncode以避免XSS问题。
答案 1 :(得分:-1)
当您在多个更新面板中将控件注册为AsyncPostbackTrigger时,有时会发生此问题。
如果这不是问题,请尝试在脚本管理器声明后添加以下内容:
<script type="text/javascript" language="javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args){
if (args.get_error() != undefined){
args.set_errorHandled(true);
}
}
</script>
此处讨论了更多解决方案:http://forums.asp.net/t/1066976.aspx/9/10