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 に答える