1

ASP.NETサーバーコントロールを作成しました。

ビューステートは完全に機能しますが、パブリックインスタントメソッドを使用してカスタムコントロールのコントロールの値を取得しようとすると、そのIDのコントロールがないという例外が発生します。

4

2 に答える 2

1

カスタム コントロールから値を取得する場合は、コントロールを OnInit イベントに登録する必要があります。

//Register your controls
protected override void OnInit(EventArgs e) {
        var controlName = (Type)LoadControl("~/path.ascx");
        controlName.ID = "YOU_MUST_SET_AN_ID";
        placeholder.Controls.Add(controlName);
}


//get your controls (add the following in any method you like)
var controlNameCtrl = (Type)placeholder.FindControl("CONTROLID");
var propertyValue = controlNameCtrl.PropertyName;
于 2012-10-15T09:25:35.173 に答える
0

カスタム コントロールを作成すると、それ以降のページはカスタム コントロールを 1 つのエンティティとして識別し、カスタム コントロール内の個々のコントロールに直接アクセスすることはできません。

カスタム コントロールの個々の要素のプロパティ値を取得するには、カスタム コントロール内の個々のコントロールをラップするカスタム コントロールでプロパティを定義する必要があります。

ただし、含まれているコントロールの値は、ユーザー コントロール自体 (配置されているページではなく、コントロール コード自体) でいつでも取得できます。カスタム コントロールにイベントを記述して相互作用させることもできます。

于 2012-10-15T09:07:57.550 に答える