IsPostback Индивидуальные - PullRequest
       14

IsPostback Индивидуальные

0 голосов
/ 29 декабря 2011

Я пытаюсь создать свой 'пользовательский IsPostBack', все, что я сделал, это создал свойство bool,

bool test;
public bool MyPostBack
{
    get{ test = Page.IsPostBack; return test; }
    set{ test = value; }
}

при отладке, установив, например, значение в false, когда test is true, посленажатием F11 тест остается как есть!Я нахожу это очень странным.У тебя есть идеи почему?Спасибо.

Ответы [ 3 ]

6 голосов
/ 29 декабря 2011

Первое, что вы делаете в геттере свойства, это его сброс:

test = Page.IsPostBack;

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

Возможно, вы захотите что-то похожее на это:

bool test;

public bool MyPostBack
{
    get{ return test; }
    set{ test = value; }
}

protected void Page_Load(object sender, EventArgs e)
{
     MyPostBack = Page.IsPostBack;
}

Закрытая переменная (test) инициализируется в событии Page Load значениемсвойства IsPostBack страницы.

2 голосов
/ 29 декабря 2011

Каждый раз, когда вы читаете свойство, ваш получатель сбрасывает поле до исходного Page.IsPostBack.

0 голосов
/ 30 декабря 2011

Я хотел бы предложить другой способ сделать это. Скорее всего, вы хотели бы сохранить это в сеансе, поэтому вы можете сделать следующее:

public bool MyPostBack
{
   get
   {
        if (Session["MyPostBack"] == null)
            Session["MyPostBack"] = Page.IsPostBack;

        return (bool)Session["MyPostBack"];
   }
   set
   {
        Session["MyPostBack"] = value;
   }
}

Таким образом, MyPostBack всегда будет возвращать действительное значение, даже если вы его не инициализировали. Он будет доступен даже до Page_Load (например, в Page_Init).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...