我有一个用户控件,我已在代码隐藏中成功设置Page.EnableEventValidation = false
了Page_Init
事件(以便将页面标记呈现为字符串):
MyControl.ascx.cs
protected void Page_Init(object sender, EventArgs e)
{
if (Request.Form["__EVENTTARGET"] != null
&& Request.Form["__EVENTTARGET"] == btnPrint.ClientID.Replace("_", "$"))
{
Page.EnableEventValidation = false;
}
}
但是,当我尝试在单独的页面上复制此功能时(这次是在runat=server
脚本标签中)...
我的页面.aspx
<script runat="server">
protected void Page_Init(object sender, EventArgs e)
{
if (Request.Form["__EVENTTARGET"] != null
&& Request.Form["__EVENTTARGET"] ==
btnDownloadPDF.ClientID.Replace("_", "$"))
{
Page.EnableEventValidation = false;
}
}
</script>
...我收到以下错误:
'EnableEventValidation' 属性只能在页面指令或配置部分中设置。
现在,在我的第一个示例中,我最初尝试在Page_Load
;上执行此操作时收到此错误。但是,您似乎可以通过编程方式禁用事件验证,只要它在期间(或之前)完成Page_Init
。不幸的是,这在我的第二个示例中不起作用。
为什么这在一种情况下有效,而在另一种情况下无效?是否与代码不在代码隐藏中的事实有关?