取得したIDを使用してプロファイルを正常に更新するために、aspxファイルからRequest.QueryStringからID値を取得し、それをascxファイルに渡すことは可能ですか?
4 に答える
多くの場合、何かが UserControl にある場合、それは、コントロールの機能が十分に重要であり、別のページで再利用できる独自の再利用可能なコンテナーに分割できるためです。そのコントロールが実際に別のページで再利用される場合、コントロールはそれがどのページにあるのかを想定しないため、クエリ文字列パラメーターを参照するべきではありません。そのコントロールが、クエリ文字列パラメーターの名前が異なる別のページに含まれている場合はどうなるでしょうか? または、別のページで、その値がデータベースまたは ViewState から取得されるか、何らかの方法で自動的に決定されるのでしょうか? したがって、私の一般的なルールは、UserControl を作成する場合は、それがホストされているページについて決して想定しないことです。
ほとんどの人が言ったように、UserControl 内から Request.QueryString プロパティにアクセスすることはできますが、それはおそらく最善の方法ではありません。コンテナー ページによって設定されるコントロールのプロパティを作成することは、はるかに優れたアイデアです。
私の意見では、最も良いアイデアは、必要なすべてのクエリ文字列値のパラメーターを使用して、コントロールに LoadData (または同様のもの) と呼ばれるメソッドを作成することです。そうすれば、そのデータのエントリ ポイントが 1 つになるため、それらの値がどの時点で設定され、何に設定されるのかが明確になります。プロパティ ルートを使用する場合、すべてのプロパティが設定されているかどうか、およびページ ライフサイクルの適切な時点で設定されているかどうかについて常に懸念があります (ポストバック中に注意が必要になる場合があります)。
aspx
ページ、ユーザーascx
コントロール、マスター ページ、カスタム コントロール、およびほぼすべての場所で、クエリ文字列にアクセスできます。次のいずれかの方法を使用します。
- を介して、ユーザーコントロール内のクエリ文字列に直接アクセスします
Page.Request.QueryString
- ユーザー コントロールにプロパティを作成し、ページでユーザー コントロールをキャストしてそのプロパティへの参照を取得し、そのプロパティを設定します。次に、ユーザー コントロールで、そのプロパティを使用します。
- ASP.NET 環境内の任意の場所で、リクエスト (クエリ文字列を含む) へのアクセスを取得します。
HttpContext.Current.Request
UserControl の分離コードから Request.QueryString コレクションにアクセスできます。
次のように、クエリ文字列値をascxコントロールのプロパティとして渡すことができます。
<cc:myControl id="myControl" runat="server" myValue='<%=request.querystring("id")' />
次に、カスタムコントロールのコードビハインドで、クラスに次を追加します。
Public myValue as String