我写一个自定义HTTP处理为使用现有的用户控件的网格提供的编辑形式。基本上,我的处理程序创建的页面,表格,标题和其他控件必须能够适当地渲染现有的用户控件和在的ProcessRequest结束时,我用使用Server.Execute来执行动态创建的页面。我这样做,因为这个地方所在的解决方案是一个用户控件项目,并没有网页,也不能添加任何。这需要对几个项目是可重复使用。

这个伟大的工程,直到其中加入到这一“页”的用户控件需要回传机制的使用点。在用户控制Page.IsPostBack始终是假的,控制事件(如点击按钮)不处理。很明显,我很想念从一个典型的ASP.NET页面是如何工作的一些关键部分。 Page类仅仅是一个IHttpHandler接口的实现,但有大量的代码,我不认为应该是必要的,以获得基本的功能,在这里工作。

任何想法?

下面是从我的基HTTP处理程序的基本代码。我有从该基本处理程序继承其他类的实际用户控件添加到页面的形式。

public void ProcessRequest(HttpContext context) {
        context.Response.ContentType = "text/html";

        HtmlGenericControl htmlPage = GetHtml();
        AddTitle();
        htmlPage.Controls.Add(_head);

        HtmlGenericControl htmlBody = GetBody();

        _form.Action = context.Request.Url.ToString();
        _form.Method = "POST";
        htmlBody.Controls.Add(_form);

        htmlPage.Controls.Add(htmlBody);

        AddAjaxManager();
        AddScriptManager();

        _page.Controls.Add(htmlPage);
        //_page.ProcessRequest(context);

        context.Response.CacheControl = "No-Cache";
        context.Server.Execute(_page, context.Response.Output, true);
    }

    public bool IsReusable { get { return false; } }
有帮助吗?

解决方案

要完成这项工作,我是从页,而不是实施的IHttpHandler继承。你还需要打造出来的网页的整个HTML,但你得到所有其中的美妙(或没有)的ASP.NET Web窗体页面生命周期的,当你做到这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top