Bypass Page.VerifyRenderingInServerForm
本文关键字:VerifyRenderingInServerForm Page Bypass | 更新日期: 2023-09-27 18:09:18
我试图在单击按钮(使用Control.Render
)时将向导控件呈现为HTML字符串。我已经用下面的代码禁用了事件验证,它工作得很好,使我能够将整个Page呈现给字符串。我在包含Wizard的用户控件中执行此操作:
protected void Page_Init(object sender, EventArgs e)
{
if (Request.Form["__EVENTTARGET"] != null
&& Request.Form["__EVENTTARGET"] == btnPrint.ClientID.Replace("_", "$"))
{
Page.EnableEventValidation = false;
}
}
虽然这样可以工作,但我想单独呈现向导控件。我明白,我可以覆盖Page.VerifyRenderingInServerForm
,以防止页面抛出异常,当我试图呈现这个控件自己(没有runat="server"
表单标签),像这样:
public override void VerifyRenderingInServerForm(Control control)
{
// base.VerifyRenderingInServerForm(control);
}
但是,我不想完全重写这个。是否有一种方法可以动态地绕过这个:
- 对于特定的PostBack,其中有问题的按钮被点击,或…
- 专门用于向导控件?
不如这样写:
public override void VerifyRenderingInServerForm(Control control)
{
if (!SkipVerifyRenderingInServerForm)
{
base.VerifyRenderingInServerForm(control);
}
}
public bool SkipVerifyRenderingInServerForm
{
get
{
object o = HttpContext.Current.Items["SkipVerifyRenderingInServerForm"];
return (o == null) ? false : (bool) o;
}
set
{
HttpContext.Current.Items["SkipVerifyRenderingInServerForm"] = value;
}
}
你可以在你的按钮点击事件处理程序中设置SkipVerifyRenderingInServerForm
为true
。