Вопрос

Я загружаю серию элементов управления в событии Page_Load. Однако я должен воссоздать тех, кто контролирует каждую страницу нагрузки, что означает хранение их данных в другом месте. Это громоздкий.

protected void Page_Load(object sender, EventArgs e)
{
   MyControl control = (MyControl)LoadControl(...);
   control.Initialize(GlobalClass.controlData);
   //^gives the control the data it had previously.  
   //Or use ViewState["controlData"] if serializable.
   Controls.Add(control);
}

Я чувствую, что должен использовать if (!IsPostBack) {}, но я не знаю, как, или почему.

Напротив, если я помещу контроль в разметку, то элементы управления, кажется, остаются настойчивыми. Например, кнопка на очках будет запоминать любые изменения в свой свойство текста (я думаю?).

<asp:Button ID="buttonText" runat="server" 
            Text="Text Segment" onclick="buttonText_Click" />

Как поддерживать какую-то настойчивость с динамически добавленными элементами управления, как элементы управления, добавленные с помощью Mark-Up? Это спасет меня много работы и разочарования.

Спасибо.

(Я кодировал для небольшой вечности, но чем больше я делаю ASP.NET, тем более запутался. Что касается совершенно противоположной тому, что я понял, учится на работу :-p.)

Это было полезно?

Решение

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

Другие советы

Я понимаю вашу точку зрения. Да, это громоздкий, но вот как работает технология без гражданства.

Нет никакого способа достижения того же баавера статического контроля (те, которые вы помещаете в HTML Markup).

Следуйте советам, которые я дал в этом ответе:

Доступ к элементам управления создан динамически (C #)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top