Пока я знаю, что у нас есть LiteralControl
и PlaceHolder
, которые мы можем использовать для динамического добавления элементов управления на страницу ASP.NET во время выполнения.
Чтобы добавить HTML-код в LiteralControl
, мы используем
LiteralControl.Text = "Some HTML/Text"
и для PlaceHolder
мы используем
PlaceHolder.Controls.Add(new LiteralControl("Some HTML/Text"))
Я ищу компонент, который можно записать в него, как то, что я делаю с Response.Write(...)
, но мне это нужно длянаписать в обозначенном месте на странице.Мне нужно вызывать это много раз, чтобы отправлять небольшие куски 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"))
не вариант, потому что он создает один LiteralControl для каждого фрагмента html, который я добавляю в него, и снова он использует много памяти, которая для меня ограничена.
Мой веб-сайт интрасети имеет около 500 вызовов на одну и ту же страницу в секунду, и это вызывает огромный всплеск использования памяти, из-за которого IIS перестает отвечать на запросы других приложений.