問題タブ [htmltextwriter]
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.
c# - .Net HtmlTextWriter での例外の安全性/処理?
HtmlTextWriter
HTMLを生成するために.Netを使用しています。
この例では、実行中にエラー例外がmyObject.GenerateHtml()
発生した場合、素敵なエラー html を生成しますが、その前にspan
決して閉じられない開始タグが表示されます。
私はそれをそのようにリファクタリングすることができました
大変な作業が終わるまでスパンは開きませんが、これは私にはぎこちなく見えます。HtmlWriter でロールバックする方法はありますか? ブロックを使用する負荷を入れなければならなかったとしても。
私は現在 .Net 2.0 で作業していますが、3.5 での解決策についての議論は問題ありません。
.net - HTML をレンダリングするための流暢なインターフェース
私の意見では、HtmlTextWriter を使用して HTML をレンダリングすることは非常に直感的ではありませんが、Web フォームに Web コントロールを実装する場合は、それを処理する必要があります。出力する HTML にもう少し似た、流暢なインターフェイスを作成することは可能かもしれないと考えました。これまでに思いついた構文について、人々がどう思うか知りたいです。
"Tag"、"Text"、および "EndTag" は、HtmlTextWriter クラスの拡張メソッドであり、呼び出しを連鎖できるように、取り込んだインスタンスを返します。"Tag" の最初の呼び出しで使用されるオーバーロードで使用されるラムダに渡される引数は "HtmlAttributeManager" です。これは、HtmlTextWriterAttribute と文字列値を取り、インスタンスを返すインデクサーを提供するために HtmlTextWriter をラップする単純なクラスです。その呼び出しは連鎖できます。このクラスには、「Name」、「Class」、「Id」などの最も一般的な属性用のメソッドもあるため、上記の最初の呼び出しを次のように記述できます。
少し長い例:
このスニペットが出力する HTML を「解読」できることを願っています。少なくともそれが目的です。
構文をどのように改善できるか、おそらくより良いメソッド名、おそらく他のアプローチについて何か考えを教えてください。
編集:流暢なインターフェースを使用しない場合、同じスニペットがどのように見えるかを比較するのは興味深いかもしれないと思いました:
編集:これの目標の1つは、オーバーヘッドをできるだけ少なくすることであるという点で、おそらくもう少し明確にする必要があります。これが、ラムダの使用を制限した理由です。また、最初はタグを表すクラスを使っていたので、レンダリング前の構文で DOM ツリーのようなものを構築していましたが、構文は非常に似ていました。この解決策は、わずかなメモリ オーバーヘッドが発生するため、断念しました。HtmlAttributeManager クラスの使用にはまだいくつかのこの存在があり、属性の追加にも拡張メソッドを使用することを考えていましたが、インデクサー構文を使用できず、HtmlTextWriter のインターフェイスを肥大化させます。さらに。
asp.net - HtmlTextWriter を使用してサーバー コントロールをレンダリングしますか?
RenderContents()
ASP.NET サーバー コントロールのメソッドを作成しています。このメソッドは、HtmlTextWriter
オブジェクトを使用して出力コンテンツをレンダリングします。私が書いているコントロールの場合、HtmlTextWriter
のメソッドを使用すると、すべてのタグを開いたり閉じたり、すべての属性をストリームに追加したりするために、多くのコード行が必要になるようです。結局、必要以上に長いコードになってしまう気がします。
のような連鎖可能なクラスを使用すればStringBuilder
、私のコードは読みやすく、書きやすくなると考えていました。
私が疑問に思っていたのは、HtmlTextWriter
オブジェクトを使用してコントロール全体のコンテンツをレンダリングする理由はありますか? タグを間違った順序で記述したり、無効なマークアップを作成したりしないようにするための安全チェック (私は推測しています) 以外に、理由がわかりません。
次のようなことをするだけで簡単になるようです:
これが悪い考えになる理由はありますか?
更新Mehrdad Afshari
の回答に
応えて:別のオブジェクト
をインスタンス化するためのメモリ要件についてはあまり考えていませんでした。余分な文字列が作成されないようにチェーンできるように、HtmlTextWriter のラッパーを作成するのはどうですか。StringBuilder
c# - HtmlTextWriter オブジェクトのインデントにタブではなくスペースを使用するにはどうすればよいですか?
WinForm で実行されているコードから html を作成しています。次のhtmlを作成したい:
System.Web.UI.HtmlTextWriter クラスを使用して、次のようにしています。
これは問題なく機能しますが、結果の html をテキスト エディターで開くと、タブ文字を使用しているため、インデントが遠すぎます。代わりに、このクラスに多くのスペースを使用させる方法はありますか?
c# - アダプティブ レンダリングの恩恵を受けない場合、HtmlTextWriter を使用するメリットはありますか?
代替デバイスのアダプティブ レンダリングのメリット以外に、次のコードをすべて記述する意味はありますか。
StringBuilder がこれだけで同じものを構築できる場合:
.net - ASP.NET - Gridview を HtmlTextWriter にレンダリングする - XLS - 列形式
次のコードを使用して、グリッドビューを ASPX ページの XLS ファイルにレンダリングしています。
列の 1 つは通常 null ですが、2342515123332222 などのかなり長い整数が含まれている場合があります。これはバーコード タイプの番号です。そのため、計算を行う必要はありません。
簡単に言うと、XLS はこれを浮動小数点にしますが、これはエンド ユーザーにとっては迷惑なことです。(~23432 E 18)
XLS のこの列を強制的に文字列にする方法はありますか?
他の方法で XLS を生成するつもりはありません...私の「フォールバック」は、その列の空白以外の各エントリの前に「#」文字を書き込むことで、列が強制的に次のように解釈されることを期待しています。数字ではなくテキスト。残念ながら、これは理想的な解決策ではありません。
c# - asp:button プログラムで作成: EventHandler が起動しない
シンプルな ASP.NET フォームを持つ SharePoint Web パーツを作成しています。コントロールをレンダリングするために HtmlTextWriter を使用しています。私が抱えている問題は、割り当てた EventHandler をボタンがトリガーしていないように見えることです。
最初に CreateChildControls メソッドでボタンを宣言し、イベント ハンドラーを配線しました。
「submitButton_Click」EventHandler の機能を宣言しました。
コントロールをレンダリングします。
最後に、Web パーツを展開します。カタログに問題なく表示され、ページに追加するとコントロールが表示されます。ただし、ボタンをクリックすると、そのテキストが「Go!」に変わるはずです。良く!" 代わりに、何もしません。私はこれらすべてのテクノロジ (C#、Sharepoint、ASP.NET) にかなり慣れていないので、理解に問題があると確信していますが、ネット上の記事や以前の質問とは異なる手順を試してみてください。私の問題は解決しません。ご覧いただきありがとうございます。
編集: Web パーツを含む SharePoint ページを開き、ボタンは次のように作成されました。
OnClick 値がまったく追加されていないように見えます。これは、EventHandler を追加することでできると思っていたことです。OnClick を完全に間違った方法で追加しようとしていますか? また、ボタン名がコードで宣言したものと一致しない理由もわかりません。
c# - C#とHTMLの記述-最良の方法は?
プレーンテキストからHTMLドキュメントを作成し、それをwebBrowserに表示する必要があります。私はもっと良い方法を考えていました-System.Web.UIにHTMLTextWriterがあることがわかりますが、この名前空間を参照することはできません、誰かアドバイスできますか?ありがとう
c# - C#-HTMLを文字列として記述するオブジェクト指向の方法?
ディレクトリ内のすべてのdllファイルとそのバージョンの電子メールをプログラムで再帰的に送信しようとしています。テーブルを使用して、HTML出力としてメールを送信したいと思います。これを行うための良いオブジェクト指向の方法はありますか?すべてのタグを手で書くのは嫌です。
何かのようなもの:
c# - ASP.NET でサーバー コントロールをレンダリングする場合、どちらがより効率的ですか
次のように、サーバー コントロールの HTML 全体を出力しています。
myStringBuilder は、個別のプライベート メソッドで手動で構築される StringBuilder オブジェクトです。
これは効率的な方法ですか?それとも、HtmlTextWriter をプライベート メソッドに渡して、HtmlTextWriter.Write() を複数回呼び出す方がよいでしょうか?