0

我正在尝试使用LoadControl代码中的自定义控件来进行编程渲染。但是我注意到OnInit我的自定义控件的方法没有被调用。我在这里错过了一个重要的步骤吗?

//Loading the control
Page h = HttpContext.Current.Handler as Page;

UserControl userControl = (UserControl)h.LoadControl(pathToControl);
h.Controls.Add((Control)userControl);

//Rendering the control
StringWriter stringWriter = new StringWriter();
HtmlTextWriter writer = new HtmlTextWriter((TextWriter) stringWriter);
userControl.RenderControl(writer);
var result = stringWriter.ToString();

这是调用上面代码的地方

[ScriptService]
public partial class Ajax : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static object AjaxMethod(string productCode) {
        //here...
    }
}
4

1 回答 1

2

因此,您正在对服务器进行 PageMethods 调用,并希望将标记流回以进行自定义控件更新,这就是它的样子。PageMethods 不执行生命周期,因此它永远不会触发 OnInit 事件处理程序。人们使用 JQuery 或 HTTP 处理程序使用了相同的技术,这里有一些他们如何做到的示例:

于 2013-02-11T14:21:05.393 回答