1

ASP .net プロジェクトに取り組んでいます。次のコードを使用して Control オブジェクトにユーザー コントロールをロードしようとしていますが、そのコントロールにパラメーターを渡そうとしています。デバッグモードでは、その行にエラーが表示されますThe file '/mainScreen.ascx?matchID=2' does not exist.. パラメータを削除すると、問題なく動作します。これらのパラメーターを渡すのを手伝ってくれる人はいますか? 助言がありますか?

    Control CurrentControl = Page.LoadControl("mainScreen.ascx?matchID=2");
4

1 に答える 1

5

ユーザーコントロールは仮想パスによって参照される単なる「ビルディングブロック」であるため、クエリ文字列表記を介してパラメータを渡すことはできません。

代わりにできることは、パブリックプロパティを作成し、コントロールがロードされたらそれに値を割り当てることです。

public class mainScreen: UserControl
{
    public int matchID { get; set; }
}

// ...

mainScreen CurrentControl = (mainScreen)Page.LoadControl("mainScreen.ascx");
CurrentControl.matchID = 2;

matchIDこれで、次のようにユーザーコントロールの内部を使用できます。

private void Page_Load(object sender, EventArgs e)
{
    int id = this.matchID;

    // Load control data
}

コントロールがページツリーに追加された場合にのみ、コントロールがページライフサイクルに参加することに注意してください。

Page.Controls.Add(CurrentControl); // Now the "Page_Load" method will be called

お役に立てれば。

于 2012-08-07T11:38:53.960 に答える