問題タブ [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 投票する
4 に答える
5086 参照

c# - コントロールから派生した ASP.NET カスタム コントロールで自己終了タグをレンダリングする

私は Facebook FBML コントロール ライブラリに取り組んでおり、ASP.NET WebControls ライブラリのようにパターン化された FBML コントロールを作成したいと考えています。デフォルトでレンダリングを処理する基本クラスがあります。ここに私のレンダリング方法があります:

私が望むのは、UseXfbmlSemantics に基づいてレンダリングを変更することです。それが true の場合、レンダリングする必要があります。たとえば、次のようになります。

false の場合、自己終了タグでレンダリングする必要があります。

「真」の条件をほぼ正しく動作させることができますが、自己終了タグはメソッドの Render セットと互換性がないようです。残念ながら、その場合は、AddAttributesToRender パターンも機能しないことも意味します。実際に生成しているのは次のとおりです。

HtmlTextWriter (またはどの HtmlTextWriter を使用する必要があるか) を取得して、自己終了タグをレンダリングするにはどうすればよいですか? または、少なくとも、その中間スペースをレンダリングしないようにするにはどうすればよいでしょうか (開始タグと終了タグがすぐ隣り合うように)。

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

asp.net - 名前にダッシュを含む ASP.NET カスタム コントロールを作成する方法は?

カスタム名、具体的にはハイフンを含むように ASP.NET カスタム コントロールを設定したいので、マークアップでは次のようになります。

この構文で web.config にタグ マッピングを設定する必要があるかどうかは気にしませんが、tagMapping 要素は私がやりたいことと完全には一致しません。

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

asp.net - ドラッグ & ドロップをサポートする ASP.NET Treeview コントロール?

ドラッグ アンド ドロップをサポートする ASP.NET 用のツリービュー コンポーネントを推奨できる人はいますか (独自のノード間 - コンテンツ管理システムがページを再配置するためのものです)。オープン ソースか商用かは気にしないでください (ただし、Telerik のツリービューにはまったく拡張できません)。恥..

他のオプションはありますか?ありがとう。

0 投票する
5 に答える
16143 参照

asp.net - ASP.NET は、更新パネルにネストされたユーザー コントロールに JavaScript を挿入します

更新パネルの asyncron ポスト バック中に、Page.LoadControl メソッドを使用して、ユーザー Web コントロールを使用して JavaScript コードをページにロードしようとしています。

そのシナリオ用に特別に設計されたスクリプトマネージャーのメソッドを試しましたが、JavaScript がユーザーに返されません。

私のシナリオをもう少しうまく説明するには:

マスター ページにはスクリプト マネージャーがあり、1 つのページは非同期ポスト バック中に Page.LoadControl メソッドを介してユーザー コントロールを読み込みます。カスタム コントロールは、プリレンダリング イベント ハンドラに JavaScript を挿入します。それはjsを注入するタイミングの問題ですか、それとも単にそうすることができないのでしょうか?

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

asp.net - バリデーターが組み込まれたカスタムテキストボックス:サーバー側の検証が実行されない

私は次のようなクラスを持っています:

これは、JavaScriptが常に有効になっている内部アプリケーションでしばらくの間機能しています。最近、アップストリームのJavaScriptエラーがバリデーターの起動を妨げる可能性があることに気づきました。そのため、サーバー側の検証を開始する必要があります...そうですか?右?

したがって、Page.IsValidプロパティは常にtrueを返します(事前にPage.Validate()を明示的に呼び出してみました)。

少し掘り下げてみたところ、バリデーターのinitメソッドでバリデーターをページに追加する必要があることがわかりましたが、作成方法が原因で、これが発生することはないと思います。したがって、クライアント側の検証は機能しますが、サーバー側の検証は機能しません。

私はこれを試しました:

しかしもちろん、ここではバリデーターはnullです(必要でない場合もあるので追加しないでください)...しかし、OnInit()は私がそれらの決定を行うのに本当に早いです(RequiredプロパティはViewStateからロードされていません)例えば)。

アイデア?

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

asp.net - ASP.NET カスタム コントロール

カスタム コントロール (ASCX コントロールではない) をどのように作成し、さらに重要なこととして、それをプロジェクトで使用しますか? そのために別のプロジェクトを作成したり、DLL としてコンパイルしたりしたくありません。

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

c# - ASP.NET カスタム サーバー コントロール (GridView)、DataBinding、およびコントロール ライフサイクルの競合

カスタム サーバー コントロール (GridView から継承) を作成しました。

このページでは、GridView は DataSet に DataBound されているため、設計時には GridView にどの列が存在するかわかりません。

今、私がやりたいことは、GridView ヘッダー行のすべてのセルにテキスト ボックスを追加することです。これらのテキスト ボックスは、列のフィルタリングを制御します。(テキスト ボックスは、GridView の OnRowCreated メソッドを使用して追加されます)。

これまでのところ、テキストボックスが表示され、フィルタリングが機能しています。

問題は、すべてのポストバックの後、テキスト ボックスの Text 値が失われることです。私の実験から、これはページ/コントロールのライフサイクルでテキストボックスを追加するのが遅すぎるためのようです。

ライフサイクル (GridView の OnInit など) の早い段階でテキスト ボックスを作成して追加する必要があるが、テキスト ボックスの追加はライフサイクルの後半で取得される情報に依存する、この種の問題にどのように対処しますか?

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

asp.net - StylePlaceHolder および Style コントロールを使用して ASP.NET テーマのスタイル シートを制御する方法

更新:これは、更新されたリンクとコードを含むブログ投稿になりました。 asp-net-themes-with-the-styleplaceholder-and-style-control/


問題はとても単純です。ASP.NET テーマを使用する場合、スタイル シートがページにどのようにレンダリングされるかについて、あまり発言権がありません。

レンダリング エンジンは、<link href="..." 表記を使用して、テーマ フォルダーにあるすべてのスタイル シートをアルファベット順に追加します。

スタイル シートの順序が重要であることは誰もが知っています。幸いなことに、スタイル シートの前に 01、02、...、99 を付けて、必要な順序を強制することで、asp.net の欠点を回避できます (Rusty Swayne のブログ投稿を参照してください)。詳細については、テクニックを参照してください)。

これは、リセット スタイル シートを使用する場合に特に重要です。これにより、ブラウザー間で一貫した形式でサイトのスタイルを設定することがはるかに簡単になります ( Eric Meyer の Reset Reloaded をご覧ください)。

また、メディアの種類 (スクリーン、印刷物、投影、点字、スピーチなど) を指定する可能性もありません。また、@import メソッドを使用してスタイル シートをインクルードしたい場合も、取り残されてしまいます。

不足しているもう 1 つのオプションは条件付きコメントです。これは、「ie-fix.css」スタイル シートを使用する場合に特に役立ちます。

StylePlaceholder と Style コントロールが上記の問題をどのように解決するかを説明する前に、私の解決策はPer Zimmerman のこの件に関するブログ投稿に触発されたものです。

StylePlaceHolder コントロールは、マスター ページまたはページのヘッダー セクションに配置されます。1 つまたは複数のスタイル コントロールをホストでき、デフォルトでレンダリング エンジンによって追加されたスタイルを削除し、独自のスタイルを追加します (現在アクティブなテーマから追加されたスタイルのみを削除します)。

Style コントロールは、開始タグと終了タグの間のインライン スタイルと、その CssUrl プロパティを介した外部スタイル シート ファイルへの参照の両方をホストできます。他のプロパティを使用して、スタイル シートをページにレンダリングする方法を制御します。

例を示しましょう。マスター ページと 3 つのスタイル シート (01reset.css、02style.css、99iefix.cs) を含むテーマを持つ単純な Web サイト プロジェクトを考えてみましょう。注: 設計時のエクスペリエンスが向上するため、前述のプレフィックス手法を使用して名前を付けました。また、カスタム コントロールのタグ プレフィックスは「ass:」です。

マスター ページのヘッダー セクションに、次を追加します。

テーマ ディレクトリにスキン ファイル (Styles.skin など) を追加し、次の内容を追加します。

それは基本的にそれです。スタイル コントロールには、レンダリングを制御するために使用できるプロパティが他にもありますが、これは基本的な設定です。これがあれば、別のスキン ファイルを含めるだけでよいので、簡単に別のテーマを追加してすべてのスタイルを置き換えることができます。

次に、すべてを実現するコードに移ります。設計時の経験にはいくつかの癖があることを認めなければなりません。これはおそらく、私がカスタム コントロールの作成にあまり習熟していないためです (実際、これらの 2 つは初めての試みです)。そのため、次の点について意見をいただければ幸いです。現在開発中の WCAB/WCSF ベースのプロジェクトでは、Visual Studio のデザイン ビューでこのようなエラーが表示されますが、その理由がわかりません。サイトがコンパイルされ、すべてがオンラインで機能します。

Visual Studio での設計時エラーの例 http://www.egil.dk/wp-content/styleplaceholder-error.jpg

以下は、StylePlaceHolder コントロールのコードです。

スタイル コントロールのコード:

それで、あなたたちはどう思いますか?これは、asp.net テーマの問題に対する適切な解決策ですか? そして、コードはどうですか?特に設計時の経験に関して、いくつかの意見が欲しいです。

誰かが興味を持っている場合に備えて、プロジェクトを含むVisual Studio ソリューションの圧縮バージョンをアップロードしました。

よろしく、エギル。

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

c# - リッチ リピーターの作成、DataBind によるカスタム追加コントロールの消去

そこで...私は、Repeater から継承してその機能を拡張することにより、ページングと並べ替えを実装する独自の Repeater コントロールを作成するという巧妙なアイデアを思いつきました。これをどうやって進めるかについていくつかの情報と断片を見つけましたが、すべて問題ないようでした...

カスタム コントロールを格納する WebControlLibrary を作成しました。強化されたリピーターに加えて、「ページャー バー」として機能する複合コントロールを作成し、進む、戻る、ページを選択できるようにしました。私のページャー バーはそれ自体で 100% 動作し、ユーザーが操作したときにページ変更イベントを適切に発生させます。リッチ リピーターのデータバインドは問題なく実行されますが、データバインドが起動すると (base.databind() を呼び出すと)、コントロール コレクションがクリアされ、ページャー バーが削除されます。これにより、ページャー バーのビューステートが台無しになり、イベントを適切に発生させたり、状態を維持したりできなくなります。

base.databind() の起動後にコントロールをコレクションに追加しようとしましたが、問題は解決しません。コントロール ツリーの階層の変更に関する問題など、非常に奇妙な結果が得られ始めます ([ViewStateModeById] を追加することで解決されます)。

製図板に戻って、リピーターとページャー バーを含む 2 つ目の複合コントロールを作成する前に (リピーターがページャー バーのビューステートに関与しないようにするため)、問題を解決する方法について何か考えはありますか?

共有と共有の両方のために、リピーター自体のコードは以下のとおりです。問題は実際には追加の子コントロールの状態を維持することであるため、ページバーはそれほど重要ではありません。(一部のコードの粗さを許してください...まだ進行中の作業です)

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

asp.net - プロパティ ウィンドウで利用可能な厳密に型指定されたリソース クラスを表示する

カスタム コントロールを作成する最初の試みとして、Gridview Web コントロールを拡張しています。

拡張機能の一部として、コントロール内のグリッド列ヘッダーのローカライズをカプセル化しています。特に、この機能を有効にするためにいくつかのプロパティを公開しています。

bool AutoLocalizeColumnHeaders - 機能を有効にします

string HeaderResourceFile - ヘッダー テキストを取得する厳密に型指定されたリソース クラスを識別します

OnRowDataBound ハンドラーをオーバーライドし、Reflection を使用して適切な ResourceManager を取得して、ヘッダー テキストを設定しています。これはすべてうまく機能していますが、名前を手動で入力するのではなく、ユーザーが選択できるように、使用可能な厳密に型指定されたリソース クラスのリストを [プロパティ] ウィンドウに表示したいと考えています。

利用可能なクラスを表示するドロップダウンを表示するための TypeConverter を作成しましたが、表示する利用可能なクラス名のリストを取得する方法がわかりません。

私はかなり長い間試みてきましたが、成功せず、正気を失いつつあります。リフレクションを使用してこれを達成する方法があるに違いないと思いますか?