我正在尝试在自定义按钮控件上实现IButtonControl
,该控件不是从普通的ASP.NET按钮派生的。我已经实现了所有事件和属性,并且从服务器到客户端。
问题是PostBackUrl
仅在表单上有常规按钮时才有效。我的工作如下。
theForm.action = this._postbackUrl;
__doPostBack(this._uniqueID, v);
} catch (ex) { }
但是,如果我在页面上只有我的按钮并单击它,那么我将获得MAC ViewState验证失败。大概这是因为网站没有准备好按我的按钮改变它,所以认为这是不安全的。
有没有人知道解决这个问题的方法。我查看了ASP按钮代码,他们做了几件事,其中一些是内部的。
这些都不起作用。它们包括:
this.Page.ClientScript.RegisterForEventValidation(postbackOptions);
// where postbackOptions is built based upon my control
m = Page.GetType().GetMethod("RegisterWebFormsScript", BindingFlags.Instance | BindingFlags.NonPublic);
m.Invoke(Page, new object[] { });
m = Page.GetType().GetMethod("RegisterPostBackScript",
BindingFlags.Instance | BindingFlags.NonPublic);
m.Invoke(Page, new object[] { });
最后两个是让WebForms_DoPostbackWithOptions脚本出现。
有没有人遇到类似的问题或有一些想法?
请谢谢你, 戴夫