問題タブ [control-adapter]
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 - ImageButton コントロール アダプターの作成方法 (より一般的には、単純なコントロール アダプターの作成方法)?
border-width: 0px;
この質問のきっかけとなったのは、ImageButton Web コントロールの非常に煩わしいデフォルト スタイル ( ) を発見したことです。簡単な解決策は、独自のスタイルをコントロールに追加してオーバーライドすることStyle="border-width: 2px;"
です。
どのようにでも、単純なコントロール アダプターを作成して、適切な場所に介入し、コントロールに既定のスタイルをレンダリングしないように指示するだけでよかったでしょう。
CSSFriendly ControlAdapter プロジェクトのコードを少し調べたところ、レンダリングの大部分を再作成しているように見えます。これは、私がやりたいことにはやり過ぎです。つまり、レンダリングされるデフォルトのスタイルを変更するだけです。
質問は、コントロール アダプターを介して既定のスタイルのレンダリングを変更し、残りをそのままにしておく方法です。
それは可能ですか?
ありがとう、エギル。
asp.net - 特定のブラウザー用にレンダリングしない場合、ASP.Net コントロールを拡張してアダプターを使用するのはなぜですか?
コントロール アダプタについての私の理解では、それらはブラウザごとに異なる HTML レンダリングを許可するように設計されているということです (したがって、それらを .browsers ファイルに登録します...)。
ただし、人々はデフォルト ブラウザ用のアダプタを登録しているだけのようで、一般的に ASP.Net コントロールの Render メソッドをオーバーライドするためにそれらを使用しています。
これは本当だと思いますか?もしそうなら、アダプターを使用するのではなく、コントロールから継承して Render メソッドをそのようにオーバーライドしないのはなぜですか?
オーバーライドの利点は、アダプターではできない、より多くのプロパティを追加できることです。
アダプターをオーバーライドするよりも優れたものにする秘密のソースを見逃していないことを確認したいだけです。
c# - C#.Net - RadioButton コントロール アダプターとポストバック
周囲のスパンとしてではなく、入力タグの一部として CSS クラスを使用してラジオ ボタン コントロールをレンダリングしようとするラジオ ボタン コントロール アダプターがあります。
現在、これは私が望むものにかなり近いものをレンダリングします。唯一の違いはグループ名属性です (標準のラジオ ボタンは内部値 UniqueGroupName を使用しますが、私は GroupName だけを使用しています。UniqueGroupName を取得する方法が見つからないようです。とにかく、以下の行はこれに対抗する必要があります:
標準のラジオ ボタンを使用した古い HTML-
新しいレンダリング-
問題は、ポストバックが機能していないことです。RadioButton1.Checked 値は常に false です。ポストバックでラジオボタンの値を取得する方法についてのアイデアはありますか?
asp.net - デフォルトのコントロールアダプタマッピングがChromeまたはSafariで機能しないのはなぜですか?
コントロールアダプターがChromeとSafariでトリガーされないことを確認しました。私はデバッグしましたが、アダプター内のブレークポイントは、Firefox / IEで完全に機能する場合、Chrome/Safariではヒットしません。したがって、Chrome / Safariの場合、IISはマッピングを無視しているだけです。
私のAdapterMappings.browserファイルは次のようになります。
これはすべてのブラウザにマッピングを提供するはずですよね?
Charlesプロキシを使用して、送信されているユーザーエージェントを確認しました。彼らです:
なぜこれになるのか、何か考えはありますか?私が読んだすべてのことは、私のブラウザのマッピングが正しいことを教えてくれますか?そして、私が言ったように、これはIE / Firefoxで機能するので、私の構成は技術的に正しいことを知っています。
asp.net - ASP.Net のブラウザー検出ファイルを更新する正式な方法はありますか?
コントロール アダプターを使用している ASP.Net サイトがあります。「デフォルト」の「refID」にマップされたアダプタがあります。
これらのアダプターは、Chrome と Safariを除くすべてのブラウザーで正常に動作します。これらのブラウザでは、実行されません。私は理由を突き止めることをあきらめました.SOについて誰も答えられない質問があり、私は何日もそれを研究してきました. それはただ不可解です。
ローカル環境で同じコードをテストしましたが、問題なく動作します。さらに、他のサーバーで私の問題を複製することはできません。どういうわけか、クライアントのサイトのマシンに限定されているようです。彼らはどういうわけか時代遅れでしょうか?
この場合、.browser ファイルを「更新」する方法はありますか? .browser ファイルを自分のマシンから Framework ディレクトリから他のマシンにコピーしたいという衝動に駆られていますが、これよりも正式なものがあるのではないでしょうか? これらのファイル以外に、ASP.Net がブラウザーの検出に使用する他のデータ ソースはありますか?
asp.net - ASP.NET 2.0 では、レンダリングされたページ/コントロール出力から余分なタブと改行を削除するにはどうすればよいですか?
私はしばらくこれを研究してきました。この件に関するいくつかのリソースを見つけましたが、それらはすべて同じアプローチを使用する傾向があります-Page.Renderをオーバーライドし、HtmlTextWriterを使用して出力を文字列に変換し、一連のコンパイルされた正規表現を使用して余分な空白を削除します。ここに例があります。
まあ、私はそれを試してみましたが、うまくいきます...しかし....
Safari 5.0 では、これにより、画像の読み込みや「サーバーがビジー状態です」というエラーが発生するなど、あらゆる種類のパフォーマンスの問題が発生するようです。IE 7、FireFox 3.6、および Google Chrome 6.0 は正常に動作しているようですが、サーバーのストレス テストはあまり行っていません。時折、ページの生成に時間がかかるように見えますが、html がブラウザーに送信されると、ページはすばやく表示されます。
とにかく、考えてみると、.NET にこれらすべてのタブと改行を作成させて、文字列解析 (それらを取り除く最も効率の悪い方法) を使用してそれらをすべて再度削除させるのは、かなりばかげているように思えます。HtmlTextWriter をオーバーライドし、それをメイン ページ リクエストのツリーに渡して、出力にまったく含めないようにする方が理にかなっています。論理的には、その場合、ヒットではなくパフォーマンスが向上するはずです。
この方法を使用して空白の 50% しか削除できない場合でも、正規表現が行う作業ははるかに少なくなります。つまり、正規表現のみを使用する場合よりもパフォーマンスが向上するはずです。
コントロールアダプターを使用して、いくつかのメンバーをオーバーライドしてみました
- WriteLine() へのすべての呼び出しを対応する Write() メソッドに転送する
- NewLine プロパティを空の文字列に設定する
- OutputTabs() メソッドをオーバーライドし、単純にコードを削除する
- Indent プロパティをオーバーライドして 0 を返す
また、RenderChildren、Render、BeginRender、および EndRender をオーバーライドして、カスタム HtmlTextWriter を渡そうとしましたが、単純なラベル コントロールでさえタグの前のタブを削除できないようです。また、Reflector を使用してフレームワークを掘り下げましたが、これらの文字がどのように生成されているかを理解できません。「キャッチオール」アプローチを使用していると思っていましたが、何かが欠けているようです。
とにかく、ここに私が思いついたものがあります。このコードは、私が望むように機能していません。もちろん、ページ上のさまざまな Render メソッドを直接オーバーライドして、カスタム HtmlTextWriter のインスタンスを渡すことも試みましたが、それもうまくいきませんでした。
コントロール アダプターに慣れていない場合は、以下の xml を ASP.NET App_Browsers フォルダーの .browser ファイルに配置してください。controlType を変更して、コントロール アダプターをラベルまたはその他のテスト範囲に適用することができます。これを機能させることができれば、プロジェクトのすべてのコントロールをここに追加する必要がある場合は、それほど大したことではありません。
いずれにせよ、 VerboseHtml="false" や PreserveHtmlFormatting="false" などの単純な構成設定があるだけだと思うでしょう。MSN.com からの出力を見ると、これに似たある種の圧縮が使用されており、非常にパフォーマンスが高いように見えます。
asp.net - Css フレンドリー アダプターが機能しなくなった
数年間正常に実行されていたサイトで Css Friendly Adapters を使用しましたが、いくつかの変更を加えた後、アダプターは静かに失敗しますが、サーバー上でのみです。私のローカル コピーでは、問題なく動作します。サーバー上で、私のツリービュー html は、以前のような順序付けられていないリストではなく、テーブルの混乱としてレンダリングされます。Css Friendly Adapters のソース コードにエラー ログを挿入するという問題が発生しましたが、CSSFriendly.dll がまったく呼び出されていないことがわかりますが、dll を削除すると、アプリケーションはコンパイルされません。
私の CSSFriendlyAdapters.browser ファイルは次のとおりです。
この問題の原因について考えている人はいますか? 私は途方に暮れています。ありがとう。
c# - カスタム フォーム コントロール アダプターが起動しない
フォーム上のアクションを書き換えるために構築されたカスタム コントロール アダプターを持つ Web サイトがあります。(これは別の機関から継承したサイトです) デバッグ モードで localhost を実行すると、すべてがうまく機能します。しかし、QA 環境でサイトをサーバーに公開するとすぐに、カスタム アダプターの起動が停止します。
デバッグ シンボルを公開し、w3wp プロセスにアタッチしました。ページ ロード プロセスをステップ実行しても、カスタム コントロール アダプターに設定されたブレークポイントがヒットすることはありません。localhost でデバッグを実行すると、ページが読み込まれるたびに起動します。本番コードは同じサーバー上で実行され、本番環境のカスタム コントロール アダプターは機能しています。しかし、本番環境を更新する必要があり、本番サイトが壊れてしまうのではないかと心配しています。
カスタム コントロール アダプターがサーバー上で起動しない理由を知っている人はいますか? これまでカスタム アダプターを使用したことがありません。アダプターを App_Code フォルダーに配置し、.browser ファイルのエントリを App_Browser フォルダーに配置する以外に何かする必要がありますか?
App_Code フォルダー内のアダプター コード:
そして、App_Browser フォルダーにある私の .browser ファイル:
.net - CheckBox および RadioButton コントロール アダプター
マークアップを変更する CheckBoxList のコントロール アダプターを少し前に作成しました。
次に、CheckBox 用のアダプターを作成しましたが、これもすべて問題ありません。
しかし、サイトの RadioButton が Checkbox コントロール アダプタの render メソッドを使用していることに気付きました。
RadioButton が CheckBox から継承されているため、CheckBox コントロール アダプターによって常にキャッチされます。CMS を介して他の多くのコードを変更することを意味するため、ラジオ ボタンのレンダリングをオーバーライドしたくないため、これを停止する方法はありますか。
または、オブジェクトがラジオボタンの場合、コントロール アダプターで Render メソッドをエスケープできますか?
最初は base.Render() を使用できると思っていましたが、明らかに間違った方向に進んでおり (それらはすべて WebControl/Control から継承されています)、本質的に「parent.Render()」が必要です。
何か案は?または、新しいコントロール アダプターでラジオ ボタンのレンダリングを複製する必要がありますか?
それが役立つ場合、私のブラウザファイルは次のとおりです...
どうもありがとう。
ダン
asp.net - カスタムGridviewAdapterの作成
<div>
タグ内のセルの内容をレンダリングするGridviewコントロール用の単純なアダプターを作成したいと思います。
としてレンダリングする代わりに
次のようにレンダリングしたい
これは、JqueryまたはRowDataBoundを使用して他の方法で実行できることを理解していますが、具体的にはアダプターを使用して実行したいと思います。
デフォルトの.NetGridviewを作成するアダプターのコードを確認する方法があれば、変更は簡単だと思いますが、そのコードを取得する方法がわかりません。
どんな助けでも大歓迎です。