1

すでにロードされているページのdivにレンダリングするWebコントロールがあります。これは、ユーザーがメニューのハイパーリンクをクリックしたときに発生する必要があります。

Webコントロールには、C#コードで動的に追加されるJavaScriptファイルがいくつかあります。

また、aspxファイルを使用せず、Webコントロールを通常のhtmlページにロードしたいと考えています。

これを行うための最良の方法を教えてください。または、Webで役立つものを見つけるのに苦労しているので、記事に案内してください。どんな助けでも大歓迎です。

4

2 に答える 2

2

コントロールを文字列で動的にレンダリングし、文字列を送り返してdiv内に配置できます。ajaxを使用して、コードビハインドを呼び出してコントロールをレンダリングし、結果を返します。

    // load the control
    var oCConrol = Page.LoadControl("CustomControl.ascx");

    // here you need to run some initialization of your control
    //  because the page_load is not loading now.

    // a string writer to write on it
    using(TextWriter stringWriter = new StringWriter())
    {
      // a html writer
      using(HtmlTextWriter renderOnMe = new HtmlTextWriter(stringWriter))
      {
        // now render the control inside the htm writer
        oCConrol.RenderControl(renderOnMe);

        // here is your control rendered output.
        strBuild = stringWriter.ToString();
      }
    }

別の方法として、コントロールのみを含む空のaspxページを作成し、Ajaxを使用して呼び出すだけで同じ結果を得ることができます。結果は再びコントロールになります

しかし、JavaScriptは困難であり、コントロールを使用することはできません。テキストを送り返して、コントロール内でjavascriptとして実行することはできません。これは、個別に実行する必要があります。

于 2012-08-03T10:41:38.320 に答える
0

別のスタンドアロンの.aspxページとJqueryajaxを作成して、同様のことを行いました。Jquery ajaxを使用して.aspxページを呼び出し、ajax応答を介してそのページからレンダリングされたすべてのHTMLを返します。

私の知る限り、.aspxページのコンテキスト外でWebコントロールをレンダリングする方法はありません。

于 2012-08-04T05:08:40.190 に答える