問題タブ [loadcontrol]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - Asp.net Usercontrol LoadControl の問題
使用時に問題が発生してLoadControl( type, Params )
います。説明させてください...
私は非常にシンプルなユーザーコントロール(ascx)を持っています
以下のコード ( c# ) を使用:
Web アプリケーションの他の場所で、次のコードを使用して、ユーザー コントロールのインスタンスをページに追加しています。
Message パラメーターをコンストラクターに渡したいので、オーバーロードされたバージョンの LoadControl を使用しています。これはすべて正常に機能しているようです。
ただし、が ErrorDisplay ユーザー コントロールで起動されると、同等のマークアップがあるにもかかわらず、OnPreRender()
lblTitle 変数と lblDescription 変数は両方ともになります。null
メッセージ変数が正しく取り込まれました。
なぜこれが起こっているのか、誰かが光を当てることができますか?
ありがとう
編集:
わかりやすくするために、ユーザーコントロールをプログラムでページに追加するコードがボタンの押下に応答して実行されていることも追加します。そのため、「ホスティングページ」は Init、Page_Load を介して進行し、現在イベントハンドラーを処理しています。
ユーザー コントロールは、ボタン クリック イベントに応答して作成されているため、asp ライフサイクルの初期段階で追加できません。
c# - ボタン付きの UserControls のリストを PlaceHolder に追加する - イベントはありませんか?
複数のコントロール要素を含む「複雑な」ユーザーコントロールを利用したいと考えています。これは、リストで再利用する同じコントロールであり、既に PlaceHolder コントロールを持っています。
LoadControl(path to .ascx) を使用してコントロールを追加できます- 問題ありません。
カスタム プロパティを使用して、埋め込まれたラベルにも get/set アクセスできるので、各コントロールを完全に初期化できます。
しかし、LinkButtons を追加すると、トラブルや問題が発生します。
ボタンをクリックすると、コントロールをレンダリングするページの「送信」が行われます。しかし、コントロール自体のボタン イベントが発生していないようです (または、少なくとも親ページの PageLoad が最初に発生しているように見えますか?)ボタン。
ここでどうして間違っているのですか?
URL に ID を含む「ハードコードされた A HREF」のラベルを使用して「偽のボタン」を作成しましたが、キャッチする必要があるイベントと、ボタンをどこで、またはどのように初期化するかを知りたいのですが、これらのユーザーコントロールに「デフォルトのASP.NET」コントロールを使用できるようにしたいので(パッチワークコーディングが多すぎないことを願っています)...
c# - 特殊化せずに動的に作成されたUserControlsへのパラメーターインジェクション
私が知りたいのは、レンダリング中にそのページのライフサイクルイベント(Page_Init、Page_Load)が呼び出されHttpContext
たときに(Page_Init、Page_Load)が呼び出されるように、レンダリングにパラメーターを挿入する手法があるかどうかです。UserControl
HttpContext.Current.Server.Execute()
このような手法を使用すると、動的レンダリングに特化しなくても、任意のUserControlにデータを挿入できます(たとえば、リモートサービスの呼び出しを介して)。ASPXページの静的コントロールであるかのようにロードされます。
このベースコードフラグメントから始めます。
@ScottGu ViewManagerの例を見てきました。彼は、それぞれにデータメンバーを追加しUserControls
、コントロールがHTMLにレンダリングされる前に、リフレクションを使用してそのメンバーにデータソースを挿入します。
また、 Stefan Sedichが@ScottGuのViewManager<Control>
例を取り上げて、同じことを可能にするがリフレクションの必要性を回避するジェネリックを導出しているのを見ました。
たとえば、をレンダリングする前に、Request
オブジェクトまたはQueryString
HttpContextのにパラメータを追加できるようにしたいと思いますUserControl
。
asp.net - 動的に読み込まれたコントロールの asp .net イベント ( Telerik )
これらのコントロールで動的にロードされるコントロールとイベントについて質問があります(私の場合はボタンをクリックします:)
これは、RadPanelBar ボタンと非表示の入力を 1 つ取得したものです。
PageLoad イベントよりも、someHiddenField 値が true かどうかを確認します。true の場合、動的に読み込まれたコントロールを持つ新しい項目が RadPanelBar に追加されます。
testControl.ascx にはボタンがありますが、何らかの理由で、コントロールが動的に作成されたときに onClick イベントが発生しません。
この問題を解決する方法について何か提案をいただければ幸いです:)
前もって感謝します !
c# - ASP.NETLoadControlキーワード「base」の使用はこのコンテキストでは無効です
Webサービスに.ascxコントロールをロードし、それにいくつかの値をロードしてから、このコントロールのHTMLコンテンツを返すようにします。私はそのようなものを持っています:
MyCustomReportは以下をオーバーライドしますDataBind()
:
行base.DataBind()
はをスローしNullReferenceException
、デバッガーは次のように言います。
キーワード「base」の使用は、このコンテキストでは無効です
どんな助けでもありがたいです、ありがとう!
.net - LoadControl() の前に ResolveUrl() を呼び出す必要がありますか?
TemplateControl.ResolveUrl()
に渡す前に呼び出す必要がありTemplateControl.LoadControl()
ますか?
どの方法が好ましいですか?
または多分ResolveClientUrl()
?
asp.net - FilePathをロードせずにバックエンドクラスでAscxコントロールのインスタンスAspxページを作成する
質問:バックエンドコード(コードビハインドではなく実際のバックエンドクラス)で、Load(path)を使用せずに、.aspxまたは.ascxで定義されたページまたはコントロールをロードしてレンダリングすることは可能ですか?ページ/コントロールクラスのインスタンスを作成しますか?
私はこれを実行できるようにしたい(コードビハインドではなくバックエンドクラスから):
これの代わりに
詳細: Asp.net WebAppでは、ユーザーコントロール(.ascx)またはページ(.aspx)をHTML文字列としてレンダリングする必要がある場合があります。ページまたはコントロールがコードビハインドから継承する場合、そのクラスはバックエンドコードにインテリセンスで表示され、コンパイル時または実行時のエラーを発生させることなく、インスタンスを作成してプロパティを設定できます。ただし、ページまたはコントロールをレンダリングしようとすると、常に空の文字列が表示され、検査時に、物理ファイルパスを使用してページまたはコントロールをロードしない限り、ページまたはコントロールは抑制された内部レンダリングエラーを示します。
重要な問題は、.aspx/.ascxファイルが実行時にコンパイルされるタイミングと方法に関係していると思います。コンパイル済みのユーザーコントロールのクラスライブラリを作成したくないのは、デザインプロセスが煩雑になるためです。また、.aspx / .ascxページで提供されるデザイナー機能が本当に気に入っているので、次の方法を見つけたいと思います。ページをソリューションでコンパイルして、他のバックエンドクラスと同じように使用できるようにしますが、デザイナーを使用して作成することもできます。両方の長所を(1)デザイナーでページとコントロールを編集できるようにし、(2)インスタンスを作成し、バックエンドクラスを使用してそれらのプロパティを設定できるようにしたいと思います。
c# - LoadControl および Page_Load イベントが発生しない
みなさん!Web メソッドを介して UserControl をロードし、LoadControl 機能を次のように使用しています。
次に、次のことを行います。
問題は、コントロールの Page_Load イベントがまったく発生しないことです。別の関数を追加して、コントロールをページの Controls コレクションに追加する前に呼び出すと、その関数は起動しますが、Page_Load イベントは起動しません。
何かアイデアはありますか?皆さんありがとう!
c# - ファイル名を使用してアセンブリからユーザーコントロールをロードする方法は?
dllに準拠したユーザーコントロールのセットがあります。クラス名を使用してコントロールをロードすることができますASP.theusercontrol_ascx blah = new ASP.theusercontrol_ascx();
しかし、動的データがあり、ファイル名 (またはコントロール名) に基づいてコントロールをロードする場合、どのようにそれらをロードできますPage.LoadControl("TheURL/theusercontrol.ascx")
か?
どうもありがとう...
asp.net - オブジェクト初期化子で LoadControl を使用してプロパティを作成する
以前は、UserControls を使用してプロパティを入力できる電子メール テンプレートを作成し、次に LoadControl を使用してから RenderControl を使用して、電子メールの本文に使用する html を取得しました。これはasp.net Webフォーム内にありました。
私は mvc Web サイトを構築しようとしていて、似たようなことをしたいと思っていました。私は実際にこの機能を別のクラス ライブラリに配置することを検討しており、Web レイヤーで EmailTemplate.SubscriptionEmail() を呼び出すだけで、関連するプロパティを持つテンプレートから html を生成できるようにする方法を検討しています。場所(明らかに、メールアドレスなどのパラメータが必要です)。
テンプレートである UserControl のパスに文字列を渡すことができる単一の Render コントロール メソッドを作成したいと考えていました。私は自分のニーズに合ったウェブ上でこれに出くわしました:
私の問題は、UserControl に複数の異なるプロパティがある可能性があることです。したがって、SubscribeEmail には FirstName と EmailAddress が必要な場合がありますが、別の電子メール テンプレート UserControl (DummyEmail と呼びましょう) には FirstName、EmailAddress、DateOfBirth が必要です。
上記のメソッドは、propertyName と propertyValue のパラメーターを 1 つだけ運ぶように見えます。さまざまなプロパティを入れることができる文字列の配列を検討しましたが、オブジェクト初期化子を持っているとクールだと思ったので、次のようにメソッドを呼び出すことができます:
それは理にかなっていますか?そもそもこれが可能かどうか、そしてどのように実装するのか疑問に思っていましたか? 「オブジェクト」に設定されたプロパティを、読み込まれたユーザー コントロールのプロパティにマップできるかどうか、また、どこから始めればよいかわかりません。
誰かが前にこのようなことをしたことがありますか? 誰でも助けることができますか?
ロイド