我试图通过单击按钮(使用Control.Render
)将Wizard控件呈现为HTML字符串。我已经使用以下内容禁用了事件验证,它可以正常工作并使我能够将整个 Page 呈现给字符串。我在包含向导的用户控件中执行此操作:
protected void Page_Init(object sender, EventArgs e)
{
if (Request.Form["__EVENTTARGET"] != null
&& Request.Form["__EVENTTARGET"] == btnPrint.ClientID.Replace("_", "$"))
{
Page.EnableEventValidation = false;
}
}
虽然这有效,但我想自己渲染Wizard控件。我知道我可以覆盖Page.VerifyRenderingInServerForm
以防止页面在我尝试自己呈现此控件时(不使用runat="server"
表单标记)抛出异常,如下所示:
public override void VerifyRenderingInServerForm(Control control)
{
// base.VerifyRenderingInServerForm(control);
}
但是,我不想完全覆盖它。有没有办法可以动态绕过这个:
答案 0 :(得分:1)
如下:
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
。