ユーザーコントロールをWebコントロールに変換した経験がある人はいないでしょうか。
理想的には、設計作業の一部を他の人にオフロードしたいと思います。他の人は、適切にレイアウトされたユーザーコントロールを提供してくれます。次に、変換、コンパイル、テスト、およびデプロイのプロセスを実行できます。
MSが魔法の「サーバー制御に変換」オプションを思い付くまで、私は最初から書き直すことにかなり悩まされているようです。何か案は?
ユーザーコントロールをWebコントロールに変換した経験がある人はいないでしょうか。
理想的には、設計作業の一部を他の人にオフロードしたいと思います。他の人は、適切にレイアウトされたユーザーコントロールを提供してくれます。次に、変換、コンパイル、テスト、およびデプロイのプロセスを実行できます。
MSが魔法の「サーバー制御に変換」オプションを思い付くまで、私は最初から書き直すことにかなり悩まされているようです。何か案は?
これらのユーザー コントロールをサーバー コントロールに変換しなければならない理由はありますか? ユーザー コントロールをアセンブリにコンパイルできることに注意してください。
確かにここには特効薬はありませんが、すでにユーザーコントロールを持っているので、それほど難しくはありません。
子コントロールごとにRenderメソッドをオーバーライドし、提供されたHtmlTextWriterを渡すRenderControlメソッドを呼び出します
protected override void Render(HtmlTextWriter writer)
{
TextBox box = new TextBox();
//Set all the properties here
box.RenderControl(writer);
base.Render(writer);
}
私は何時間も検索し、それに関する多くのブログを見つけました.
私にとって唯一うまくいったのは、この記事https://blogs.msdn.microsoft.com/davidebb/2005/10/31/turning-an-ascx-user-control-into-a-redistributable-custom-control/です。
特定の制限付きで自己完結型であると述べていますが、コードビハインドをファイルに含める必要があることについては言及していませんascx
。
私は Web サイト プロジェクト (Web アプリケーションではありません!) を使用し、コード ビハインドを ascx ファイルにインライン化し、次のような制御ディレクティブのみを使用する必要がありました。
<%@ Control Language="C#" ClassName="MyPackage.MyControl"%>
したがって、基本的には、ユーザー コントロール用に 1 つのファイルが残っています。コードビハインドが別のファイルだった場合、最終的な dll を参照すると、すべてのコントロールが null になります。
http://blog.janjonas.net/2012-04-06/asp_net-howto-user-control-library-compile-dll-fileも試しましたが、リフレクションで ascx ファイルが見つかりませんでした。