これまでのところ、実行時に動的にASP.NETページにコントロールを追加するために使用できるLiteralControl
とPlaceHolder
があります。追加する代わりに書き込むasp.netコンポーネントがありますか
我々は
LiteralControl.Text = "Some HTML/Text"
を使用してPlaceHolder
のために私たちは、私は私が私がResponse.Write(...)
で何をすべきかのようにそれに書き込むことができるコンポーネントを探しています
PlaceHolder.Controls.Add(new LiteralControl("Some HTML/Text"))
を使うLiteralControl
にHTMLコードを追加するには私はそれをページの指定された場所に書き込む必要があります。メモリを節約するために、HTMLコードの小さなチャンクを出力するために、これを何度も呼び出す必要があります。
ように、コンポーネントの使用は、このようなものになりますaspxページに
私が出してあげる:
<body>
...
<div>
<asp:componentName ID="SomeComp" runat="server" />
</div>
...
</body>
そして背後にある私のコードでは、私はこれを使用します(大きな数を想像してみてSetCount)のために:
for (int i;i<SetCount;i++){
SomeComp.Write("Some Text/HTML Code");
}
While(Read.Read()){
SomeComp.Write("Some More Text/HTML Code");
}
はFYI DOT.NET
に文字列に追加すると、そのLiteralControl
は良い選択ではありませんが非常に遅いです。あなたがコントロールして、それを処分することを割り当てるまで、それはメモリ内のすべての文字列を保持しますので、
のStringBuilderを作成し、
LiteralControl.Text = StringBuilder.ToString()
使用はオプションではありません。
PlaceHolder.Controls.Add(new LiteralControl("Some HTML/Text"))
それは私がそれに追加して、再び、それは私のために制限されていることを多くのメモリを使用するHTMLの各チャンクのための1 LiteralControlを作成するためのオプションではありません。
イントラネットWebサイトでは、1秒間に約500件のコールが発生し、メモリ使用量が急激に増加し、IISが他のアプリケーションの要求に応答しなくなります。各HTML要素のための単一のLiteralControlオブジェクトを作成する問題について
おそらく、jQueryで 'div'を使用すると役に立ちますか? –
LiteralControlの動作をもっと速くしたいのですか? Renderの呼び出しは単にoutput.Write(this._text)なので、どのように高速化され、まだ(よく動作する)コントロールになるのかはわかりません。おそらく<%= foo %>はあなたにとってより適していますか? –
@ JamesManning、あなたのアイデアをありがとう、 'LiteralControl'は高速ですが、その入力は文字列であり、その出力への追加は文字列' + 'です。私は 'DOT.NET'が非常に遅い文字列を扱っていることを知っていると確信しています。私が探しているケースは、ページの指定された領域に直接書き込むLiteralControl.Append( 'Some HTML/Text')です。 – AaA