来自客户端的服务器事件

我在使用Asp.net页面生命周期时遇到了问题。我正在尝试使用带有asp.net LinkBut​​ton的HtmlTextWriter创建一个自定义菜单来触发服务器事件。我无法触发服务器事件,当我单击链接按钮时,我得到'对象引用没有设置为对象的实例'。这是一些代码。
protected string CreateModuleMenu()
        {
            var modules = ModuleManager.GetModulesByDeveloperId(Developer.DeveloperID);
            StringWriter sw = new StringWriter();
            ClientScriptManager cs = Page.ClientScript;
            using (HtmlTextWriter writer = new HtmlTextWriter(sw))
            {
                foreach (var module in modules)
                {
                    writer.RenderBeginTag(HtmlTextWriterTag.Li);
                    writer.RenderBeginTag(HtmlTextWriterTag.Dl);
                    writer.RenderBeginTag(HtmlTextWriterTag.Dt);
                    writer.Write(module.Name);
                    var files = ModuleManager.GetModuleFilesByModuleId(module.ModuleID);
                    foreach (var file in files)
                    {
                        writer.RenderBeginTag(HtmlTextWriterTag.Dd);
                        LinkButton lb = new LinkButton();
                        lb.ID = "mc" + file.ModuleFileID;
                        lb.Attributes.Add("onclick", cs.GetPostBackEventReference(lb, "LoadControl_Clk"));
                        lb.Text = file.Name;
                        Page.RegisterRequiresRaiseEvent(lb);
                        lb.RenderControl(writer);
                        writer.RenderEndTag();
                    }
                    writer.RenderEndTag();
                    writer.RenderEndTag();
                    writer.RenderEndTag();
                }
            }
            return sw.ToString();
这是我的点击事件:
protected void LoadControl_Clk(object sender, EventArgs e)
        {

            Response.Write("Hello World");
        }
最后,这是我在Page_Load事件中的内容。注意:我尝试将其移动到PreRender,PreInt等。
protected void Page_Load(object sender, EventArgs e)
{   
    LiteralControl lit = new LiteralControl();
        lit.Text = CreateModuleMenu();
        phModuleMenu.Controls.Add(lit);
        if (DefaultModuleFile == null)
            Response.Write("Error.");
        else
        {
            Control ctrl = LoadControl(DefaultModuleFile.Src);
            phAdminModules.Controls.Add(ctrl);
        }
}
丢失。谢谢。     
已邀请:
也许你只需要在第一次调用页面时加载Page_Load中的控件,即if!IsPostBack。 如果在每个页面加载时加载控件,您将丢失被触发的事件。     

要回复问题请先登录注册