問題タブ [custom-server-controls]

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.

0 投票する
1 に答える
1719 参照

c# - ASP.NET カスタム コントロールと Page.Request.Form[]

System.Web.UI.Control から継承し、asp.net サーバー側コントロールではなく汎用 HTML コントロールを含むコントロールがあります。Page.Request.Form[Control_id] を使用して、コントロールの 1 つの値を取得します。これは基本的に、これらのカスタム コントロールの列を含むグリッドビューがあり、新しい行 [row6] を追加し、行 [row3] の上から行を削除すると、新しい行のコントロール [row6 が row5 になる] で受け入れられます。そのすぐ上の行の値を想定します [行 5 は行 4 になります]。

これは、Page.Request.Form[] を使用して各コントロールの値を取得するためだと思いますが、それらの値が以前に同じ行を占有していたコントロールに属していることをコントロールが認識していません。これを修正するにはどうすればよいですか? 何か提案があればよろしくお願いします!!

0 投票する
1 に答える
862 参照

asp.net - asp.net カスタム サーバー コントロールのデザイン時のサポート

デザイン ビューのカスタム パネル コントロールに問題があります。render メソッドをオーバーライドしても、設計時には影響しません。

次のようにテキスト ボックスを拡張すると、設計時に div タグが表示され、次にテキスト ボックス コントロールが表示されました。パネル コントロールで同じことを試みましたが、ここにテキストを含む div が表示されませんでした。パネルはコンテナー コントロールであるため、デザイン ビューでは動作が異なるようです。本当にイライラします。デザインタイムを希望どおりにレンダリングする方法についてのアイデアはありますか?

0 投票する
2 に答える
1757 参照

asp.net - カスタム WebControl を Panel の DefaultButton として使用する

画像付きのボタンとして機能するカスタム Web コントロールを作成しました。DefaultButtonこれをASP.NET パネル コントロールのパラメータのターゲットとして設定できるようにしたいと考えています。IButton インターフェイスを実装しましたが、コントロールを使用してページをロードしてもエラーは発生しません。ただし、そのパネル内のテキスト ボックスで Enter キーを押すと、コントロールの Click イベントは発生しません。コントロールを標準の ASP.NET ボタンに置​​き換えると、すべて正常に動作します。

テキスト ボックス、カスタム ボタンのインスタンス、および標準の asp.net ボタンを含むパネルを含むテスト ページがあります。ボタンは、テキスト ボックスを呼び出し元の ID に変更するイベント ハンドラーに接続されています。

パネルの DefaultButton が ASP.NET ボタンに設定されている場合、次のボックスで Enter キーを押すと正しく機能します。ページがポストバックされ、テキスト ボックスに標準ボタンの名前が入力されます。パネルの DefaultButton が my ボタンに設定されている場合、テキスト ボックスで Enter キーを押すと、ページがポストバックされますが、Click イベントは発生しません。ボタンを手動でクリックすると、正しく機能します。

Panel コントロールからのイベントを処理するために、カスタム コントロールに何を追加する必要があるかを知っている人はいますか? Button のソース コードで Reflector を使用して探していますが、この動作を可能にしている原因を特定できません。

以下にコントロールのソースと、関連するテスト ページのソースを掲載しました。

コントロールソース:

それを呼び出すコード:

コードビハインド:

コントロールは次のようにレンダリングされます。

0 投票する
3 に答える
2073 参照

asp.net - asp.netサーバーコントロール-複数のJavaScriptを追加しないでください

LinkBut​​tonから派生し、小さなjavascript関数をページにレンダリングするasp.netサーバーコントロールを作成しました。

このコントロールをページで何度も使用したいのですが、JavaScriptをページで1回だけレンダリングしたいだけです。一方で、将来的にjsファイルを追加するのを忘れたくないので、手動でjsファイルに追加するのではありません。

これを行うための最良の方法は何でしょうか?

0 投票する
1 に答える
302 参照

c# - ASP.NET でサーバー コントロールをレンダリングする場合、どちらがより効率的ですか

次のように、サーバー コントロールの HTML 全体を出力しています。

myStringBuilder は、個別のプライベート メソッドで手動で構築される StringBuilder オブジェクトです。

これは効率的な方法ですか?それとも、HtmlTextWriter をプライベート メソッドに渡して、HtmlTextWriter.Write() を複数回呼び出す方がよいでしょうか?

0 投票する
0 に答える
600 参照

asp.net - Microsoft のヒントを使用して ascx UserControl を再利用可能なサーバー コントロールに変更した後の NullReferenceException

Web サイトの UserControls を再利用可能なサーバー コントロールに変換し、宣言型コードを使用する機能を維持するという実証済みの手法により、ASCX コード内で宣言されたNullReferenceException任意のコントロールを参照できます。

同じプロジェクトから ASCX を呼び出す場合、この問題は発生しません。

アイデアは、コントロールの宣言型コードのオンデマンド コンパイルが行われるということです (プリコンパイルされた Web サイト)。aspnet_merge を適用した後、厄介な名前のアセンブリは通常の名前を受け取りますが、この最初のステップがうまくいかない場合...私がしたこと、要するに:

  1. Web サイトを作成し、ユーザー コントロールを追加し、リテラルを追加して、そのテキストをコード ビハインドに設定します。試して。
  2. 固定の名前付きアセンブリにコンパイル、更新不可
  3. 出力 DLL を取得し、それらを別の webite プロジェクトに追加してテストします。

最後のステップでは、宣言によって初期化されたコントロールの任意のプロパティにそのコントロール内 (つまり、私の場合は Page_Load 内) からアクセスしようとすると、null 参照例外が発生します。

PS: Scott Guthrieが同じテクニックを説明しています

0 投票する
1 に答える
217 参照

asp.net - カスタムバリデータでテキストボックスのプロパティにアクセスするにはどうすればよいですか?

BaseValidator から継承するカスタム バリデータ コントロールを構築したいと考えています。私のasp.netアプリケーションのテキストボックスでのみ使用されます。カスタムバリデーター内でテキストボックス自体にアクセスする (テキストボックスのプロパティを読み取る) にはどうすればよいですか?

EvaluateIsValid 関数にあるものは次のとおりです。

コントロールが見つからないように見えるため、null 参照例外で中断します。これを別の方法で行うことはできますか?

ありがとう!

0 投票する
4 に答える
1836 参照

c# - ASP.NET フォーラム コントロールの推奨事項は?

asp.net 3.5 サイトに統合されるフォーラム サーバー側の asp.net コントロールを探しています。

www.asp.net のギャラリー ページでたくさん見てきましたが、評価が付けられているものはほとんどなく、どれが信頼でき、どれが悪夢に変わるかを判断するのは困難です。

おすすめは?無料コンポーネントと有料コンポーネントの両方を歓迎します。

0 投票する
1 に答える
554 参照

asp.net - ASP.NETサーバーコントロールはサーバー側のタグを発行します

カスタムASP.NETサーバーコントロールを作成するのは初めてですが、次の問題が発生しています。

から継承するコントロールがありSystem.Web.UI.HtmlControls.HtmlGenericControlます。コントロールのRenderメソッドをオーバーライドし、を使用しHtmlTextWriterてカスタムHTML(基本的にTDはいくつかのカスタム属性を持つタグ)を発行してから、ケースクラスのRenderメソッドを呼び出します。

コントロールの使用:

問題は、レンダリングされたHTMLを表示すると、サーバータグがクライアントにも出力されることです(タグの直後TD)。

これを防ぐにはどうすればよいですか?

0 投票する
1 に答える
120 参照

c# - Visual Studio は CustomDesigner の代わりに UserControlDesigner を使用します。

ASP-UserControlQuestionWithAnswer (.ascx) : BaseQuestion : UserControl と ControlDesignerがありQuestionDesigner : UserControlDesignerます。次に、DesignerAttribute を使用してコントロールとデザイナーを関連付けます。

すべてのタイプが同じアセンブリ (WEB アプリケーション) にあります。しかし、それは私の代わりに UserControlDesigner をロードします。デザイナーを別のアセンブリに配置する必要がありましたか? asp-page デザイナーがデザイナーを見つけられないと思います。

どうも!モ


デモコード: