2

App_Code内にあるクラスからロードしてキャストしたいascxがあります。aspxページからは機能させることができますが、App_Codeクラスからは機能させることができません。

ASPXページ手法は、次のコードで正常に機能します。

pc = LoadControl("enquirycapture.ascx");
((ASP.enquirycapture_ascx)pc).CustomProperty = customObject;

(注:aspxページには次のものがあります:)

<%@ Reference VirtualPath="~/enquirycapture.ascx" %>

ただし、App_Codeクラス内からコントロールをキャストしようとすると、ascxクラスを「見る」ことができないため、カスタムプロパティを設定するためにキャストすることができません(ロードすることはできますが、キャストすることはできません) 。App_Codeクラス内から<%Reference...>を複製する方法がわかりません。App_Codeクラスからascxを参照(したがってキャスト)する方法を知っている人はいますか?ありがとう。

4

1 に答える 1

6

App_CodeCodeFileの型を参照できない別のアセンブリにコンパイルされます。

ただし、ユーザーコントロールに実装する予定のカスタムプロパティとメソッドを識別するインターフェイス/基本クラスをApp_Codeフォルダーに追加できます。

public class EnquiryCaptureBase : System.Web.UI.UserControl
{
    public object CustomProperty { get; set; }
}

その後

public partial class EnquiryCapture : EnquiryCaptureBase
{

}

そして最後にどこかでApp_Code

pc = LoadControl("enquirycapture.ascx");
((EnquiryCaptureBase)pc).CustomProperty = customObject;
于 2011-03-04T12:49:31.617 に答える