Как я могу изменить все право на контент страницы ASP.NET, прежде чем оно будет произведено?

C дает Вам очень мало абстракции от блока. Некоторые компиляторы C даже позволят Вам встроенный ассемблерный код. Это может быть очень полезно для размышления о том, как компьютер работает, который важен для знания.

Однако если Вы действительно интересуетесь Объектом-C, не позволяют себе застрять, пишущий что-то в C просто потому что его "польза для Вас". Вы не должны расстраивать себя, в то время как Вы пытаетесь изучить новый набор навыков. Важно, чтобы Вы весело провели время с тем, что Вы делаете.

10
задан John Bubriski 16 October 2009 в 20:28
поделиться

5 ответов

Вы пробовали переопределить метод рендеринга?

protected override void Render(HtmlTextWriter writer)
{
   StringBuilder htmlString = new StringBuilder(); // this will hold the string
   StringWriter stringWriter = new StringWriter(htmlString);
   HtmlTextWriter tmpWriter = new HtmlTextWriter(stringWriter);
   Page.Render(tmpWriter);
   writer.Flush();

   writer.Write(DoReplaceLogic(htmlString.ToString()););
}
8
ответ дан 3 December 2019 в 23:13
поделиться

Упрощенный ответ, который приходит на ум, - использовать элементы управления asp: Literal для вашего "заполнители". Вы можете установить их содержимое во время загрузки страницы или подключиться к событию PreRender и установить их затем.

0
ответ дан 3 December 2019 в 23:13
поделиться

Похоже, вы можете захотеть иметь HTML-литералы на своей странице, а затем вы можете просто заменить их соответствующим содержимым в событии Page_Load.

Для этого вам потребуется написать HTML код, а не какой-то простой текст, но похоже, что вы можете внедрять туда свой собственный код JavaScript или тому подобное, для чего это отлично подойдет.

0
ответ дан 3 December 2019 в 23:13
поделиться

Просматривали ли вы событие PreRender в жизненном цикле?

Перед тем, как это событие произойдет:

• Объект Page вызывает EnsureChildControls для каждый элемент управления и для страницы.

• Каждый элемент управления с привязкой к данным, DataSourceID которого свойство установлено, вызывает его DataBind метод.

• Произошло событие PreRender для каждого элемента управления на странице. Используйте событие, чтобы внести окончательные изменения в содержимое страницы или ее элементы управления .

Я считаю, что это последнее место, где вы могли бы сделать что-то подобное. Следующее событие - SaveStateComplete , которое, согласно документации, имеет следующее поведение:

Перед тем, как это событие произойдет, ViewState был сохранен для страницы и для всех элементов управления. Любые изменения в страница или элементы управления на этом этапе будут проигнорированы. Используйте это событие выполнять задачи, требующие состояния просмотра быть спасенным, но это не делает изменения в элементах управления.

1
ответ дан 3 December 2019 в 23:13
поделиться

I know that this answer is not going to help since you have already solved this prob and moved on. This is just for people who will face a similar problem in the future ;)

There are two approaches you could use.

  1. This is similar to the accepted answer. But I would recommend overriding the render method in a BasePage and deriving all your templates from this.

  2. Use a HttpModule or the Global.asax and attach a Filter to the Response object. To me this make more aesthetic sense because the "Filter" property is supposed to help you filter the output which is exactly what you want!

BTW, how is it going with Ektron so far? They are driving me crazy for sure!

5
ответ дан 3 December 2019 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: