![](/img/trans.png)
[英]ASP.NET WebForms Custom UserControl - base.SaveViewState() is returning null — why?
[英]Events in Asp.Net Webforms custom UserControl
我创建了一个新的Web用户控件。 该控件有一个按钮。 在此按钮的click事件上,我以这种方式引发了一个事件:
public partial class SearchDate : UserControl, IPostBackEventHandler
{
private static readonly object ObjEvent = new object();
// delegates
public delegate void VoidDelegate();
// events
[Category("Action")]
[Description("Azionato quando si preme il cancella nel filtro data")]
public event VoidDelegate CancelSearchDate
{
add
{
Events.AddHandler(ObjEvent, value);
}
remove
{
Events.RemoveHandler(ObjEvent, value);
}
}
protected virtual void OnCancelSearchDate()
{
var cancelEvent = (EventHandler) Events[ObjEvent];
if (cancelEvent != null)
{
cancelEvent(this, new EventArgs());
}
}
protected void BtnSearchDateCancelClick(object sender, EventArgs e)
{
OnCancelSearchDate();
}
protected void Page_Load(object sender, EventArgs e)
{
}
public void RaisePostBackEvent(string eventArgument)
{
OnCancelSearchDate();
}
}
我创建了一个委托,一个事件,并在单击按钮时引发它。
在另一个托管该控件的Web表单中,我以这种方式向该事件添加了处理程序:
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
return;
InitDateFilter(SearchDate);
}
protected void InitDateFilter(SearchDate searchDateControl)
{
searchDateControl.CancelSearchDate += SearchDateControlCancelSearchDate;
}
void SearchDateControlCancelSearchDate()
{
// other stuff
currUtente.FiltroData = null;
SaveSession();
}
当我单击该按钮时,它会尝试评估事件,但它始终为null。 我是asp.net网络表单的新手,对我来说似乎很奇怪,它不能很好地工作。 我试图以更简单的方式引发事件(在事件定义上没有'add'和'remove'),如果事件不为null但行为相同,则仅调用该事件。
谢谢
尝试仅覆盖Page中的OnInit事件,然后在其中将处理程序添加到您的事件中。
像这样:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
InitDateFilter(SearchDate);
}
让我知道是否有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.