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,其中有问题的按钮被点击,或…
  • 专门用于向导控件?

Bypass Page.VerifyRenderingInServerForm

不如这样写:

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;
    }
}

你可以在你的按钮点击事件处理程序中设置SkipVerifyRenderingInServerFormtrue

相关文章:
  • 没有找到相关文章