Хобрук: Ваш путь к мастерству в программировании

С# asp.net textbox.text не устанавливается?

В родительском классе я вызываю функцию, определенную в дочернем классе, и анализирую нужные мне значения.

Родительский класс.ascx

protected void Page_Load 
{       
  if(info != null) 
    ControlIWantToGetInformationTo.SetInfo(info);  
}  

Дочерний класс.ascx

public void SetInfo(Info info)  
{  
  someTextBox.Text = info.TheVariableWithin.ToString(); 
}  

Что я могу понять, так это то, что этот ParentClass (control) загружает и выполняет метод, но когда страница ChildClass (control) загружается, она сбрасывает ранее установленную переменную на null, как я могу обойти это?

19.08.2011

  • Как вы устанавливаете текстовое значение внутри элемента управления? Вы должны убедиться, что код выполняется в правильном порядке, но это может быть очень сложно в веб-формах ASP.Net из-за сложных правил жизненного цикла страницы. 19.08.2011
  • Ах, похоже на проблему, которая у меня возникла :'( ты хочешь сказать, что я должен все сломать??? 19.08.2011
  • Быстрое решение может состоять в том, чтобы переместить код, который у вас есть в Page_Load, в событие PreRender, которое происходит очень поздно в жизненном цикле. Но это не очень хорошее решение, так как оно ломается, как только вам приходится полагаться на использование PreRender и внутри элемента управления. 19.08.2011
  • Хотелось бы избежать +1, потому что решение работает. 19.08.2011

Ответы:


1

Используйте сеанс. В вашем методе вместо установки значений ваших элементов управления используйте объект и заполните свойства вашего объекта и сохраните его в сеансе, когда вы закончите. В вашем дочернем классе загрузите свои значения из объекта, который вы сохранили в Session.

//Parentclass
protected void Page_Load 
{       
  if(info != null) 
  {
    MyControlObject myObj = new MyControlObject();
    myObj.prop1 = txt1.Text;
    myObj.prop2 = txt2.Text;
    Session["myObj"] = myObj;
  }
} 

//Childclass
public void SetInfo(Info info)  
{  
  MyControlObject myObj = Session["myObj"] as MyControlObject;
  if(myObj != null)
  {
    //assign the values to your controls
    Session["myObj"] = null; //when you are done, clear the session.
  }
}  
19.08.2011
  • Как уничтожить сеанс после его создания и использования?? 19.08.2011
  • Спасибо +1, потому что решение работает, я подожду до полуночи по Гринвичу +0, прежде чем я соглашусь, просто если кто-то ответит ответом, избегая сеансов и события PreRender. 19.08.2011
  • У меня была такая же проблема, и я хотел бы увидеть лучшее решение, чем это. Именно это я и сделал. 19.08.2011

  • 2

    Я думаю, вы столкнулись с проблемой чувствительности к регистру.

    попробуй это

    someTextBox.Text = info.TheVariableWithin.ToString(); 
    
    19.08.2011
  • Это просто опечатка, извините, исправление в вопросе сейчас. 19.08.2011
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..