C# 如何在ASP.net自定义控件中处理回发

C# 如何在ASP.net自定义控件中处理回发,c#,asp.net,C#,Asp.net,可能是我遗漏了一些重要的东西,以便按照要求正确实施CustomControl,或者我缺乏知识。实际上,我已经创建了用于搜索的CustomControl(.dll),它有3个下拉框(从数据库填充)、1个文本框和搜索按钮,在选择合适的筛选条件后,用户单击搜索按钮,并显示simple gridview。我的问题是,我不想在每次回发(从页面触发)时填充CustomControl中的下拉框。当您所在的位置无法发现页面时,可以使用此全局参数: System.Web.HttpContext.Current

可能是我遗漏了一些重要的东西,以便按照要求正确实施CustomControl,或者我缺乏知识。实际上,我已经创建了用于搜索的CustomControl(.dll),它有3个下拉框(从数据库填充)、1个文本框和搜索按钮,在选择合适的筛选条件后,用户单击搜索按钮,并显示simple gridview。我的问题是,我不想在每次回发(从页面触发)时填充CustomControl中的下拉框。

当您所在的位置无法发现
页面时,可以使用此全局参数:

System.Web.HttpContext.Current
现在,您可以从中获得
页面
,如果该页面可用

Page page = HttpContext.Current.Handler as Page;

if (page != null && page.IsPostBack)
{

}
或者,您可以使用

System.Web.HttpContext.Current.Request.Form
并检查表单是否有值,然后可能是回发


请注意,在使用之前,请始终检查
System.Web.HttpContext.Current
是否为null,因为如果从线程调用它,并且没有可用的页面,然后是
null

是否检查
页面加载上控件中的
IsPostback
属性?我没有获得IsPostback属性,我实现了override void OnInit(EventArgs e)和override void CreateChildControls()Hi Aristos!谢谢您的回答,现在我收到了回传,但我的问题是,当第二次CreateChildControls()调用时,如果没有在下拉框中加载值,它就会丢失。@VishwanathMishra可能会禁用此控件在使用时的视图状态。(或者您没有在viewstate上保存此控件)