2011-07-08 30 views

答えて

0

次のようなASCXコントロールのプロパティとして、クエリ文字列値を渡すことができます。あなたのクラスに以下を追加し、カスタムコントロールの背後にあるコードの中で次に

<cc:myControl id="myControl" runat="server" myValue='<%=request.querystring("id")' /> 

Public myValue as String 
2

UserControlのコードビハインドからRequest.QueryStringコレクションにアクセスできます。あなたのaspxページで

3

、あなたのascxユーザーコントロールでは、あなたのマスターページ、あなたのカスタムコントロールで、ほとんどどこでもでは、クエリ文字列にアクセスすることができます。その後、あなたのページに、そのへの参照を取得するには、ユーザーコントロールをキャストし、ユーザーコントロールにプロパティを作成しますPage.Request.QueryString

  • を経由して右のユーザーコントロール内のクエリ文字列に直接

    1. アクセス:これらの方法のいずれかを使用しますそのプロパティを設定します。次に、ユーザーコントロールで、そのプロパティを使用します。どこASP.NET環境内で
    2. 、何かがユーザーコントロールである場合、コントロールにおける機能は破られるために十分重要であるので、それはどちらかであることが多いHttpContext.Current.Request
  • 6

    を経由して(クエリ文字列を含む)の要求へのアクセスを得ますそれを別のページで再利用できる独自の再利用可能なコンテナにします。そのコントロールが実際に別のページで再利用される場合、コントロールがそのページ上のどのページかを前提にしてはならないため、実際にはクエリ文字列パラメータを参照してはいけません。そのコントロールがクエリ文字列パラメータの名前が異なる別のページに含まれる場合はどうなりますか?または、データベースやViewStateの値が別のページにあるか、何らかの理由で自動的に決定されますか?だから私の一般的なルールは、あなたがUserControlを作るつもりなら、それがホストされているページについて決して決して決して決して使うことはないということです。

    ほとんどの人が言ったように、UserControl内からRequest.QueryStringプロパティにアクセスすることはできますが、それはおそらく最良のアイデアではありません。コンテナページで設定されるコントロールのプロパティを作成する方がはるかに良いアイデアです。

    私の意見では、ほとんどの場合、LoadData(または類似のもの)という名前のメソッドをコントロールに作成し、必要なすべてのクエリ文字列値のパラメータを使用します。あなたはそのデータのための単一のエントリポイントを持っているので、それらの値がどのような点で設定されているのか、そしてそれらが何に設定されているのかは明らかです。プロパティールートに行くと、すべてのプロパティが設定されているかどうか、およびページライフサイクルの正しいポイントに設定されているかどうかについての懸念があります(ポストバック時にトリッキーになる可能性があります)

    関連する問題