HELP ASP.NET

4 отговора 134 прегледа
#1

HELP ASP.NET

<%@ Page language="c#" Codebehind="Default.aspx.cs" ....

във Default.aspx.cs имам декларирана променлива :

MyType myVar ;

Едина от функциите при определен клик инстанцира променливата:
MyType myVar = new MyType();

Обаче след като submit-на нещо на същата страница ми казва че myVar вече не е инстанцирана т.е myVar = null.

Надявам се някои да има идеи !

Отговор
в отговор на AiSiktiriks #2

Re: HELP ASP.NET

Ами информацията, която даваш не е достатъчна, но имам предположение. Ако инициализираш MyType във блок, който се изпълнява само при начално зареждане (тоест примерно)

if (!Page.IsPostBack)
{
MyType myVar = new MyType();
}

то при Submit (PostBack) myVar действително ще е нул. По принцип Page_Load event-a се изпълнява преди евент хандлера на контрола, който прави постбак, така че не би трябвало да има проблеми.

Отговор
в отговор на AiSiktiriks #3

Re: HELP ASP.NET

При всяко генериране на страница, се създава нова инстанция на страницата.
Затова е нул твоят обект. Едно възможно решение е да го запазваш в сесията. Може да създадеш самия обект в Session_Start. Примерно

Session_Start()
{
...
Session["MyVal"] = new MyVal();
...
}

Там където ти трябва :
MyVal mv = Session["MyVal"];

Отговор
в отговор на AiSiktiriks #4

Re: HELP ASP.NET

Да обаче при мене нещата са малко по сложни.Обекта които създавам при първоначалното зареждане на страницата създава нов Thread.Аз искам да имам постоянна референция към този Thread за да мога да го манипулирам, тоест докато усера си цъка по страницата във всеки един момент да може да абортне треда които е бил създаден при първоначалното зареждане на страницата

Отговор
в отговор на AiSiktiriks #5

Re: HELP ASP.NET

Нишката също ти е представена чрез обект - Thread, сложи този обект в сесията. Любопитно ми е, поради каква причина стартираш нова нишка?

Отговор