Отображение окна подтверждения и получение его значения в коде позади

Вот что я хочу сделать. У меня есть форма, которую заполняет пользователь (создавая разделы и подразделы), и когда они нажимают «Сохранить», я хочу проверить базу данных, чтобы увидеть, назвали ли они раздел так же, как тот, который уже существует. Если они есть, я хочу получить от них подтверждение, чтобы они знали, что они создадут дубликат, если продолжат. Если они нажимают «да», мне нужно продолжить, иначе мне нужно прервать. Вот некоторый псевдокод того, что у меня есть до сих пор.

 protected void SaveButton_Click(object sender, EventArgs e)
{
    try
    {
        if (CheckForDuplicates())
        {
            //proceed normally
        }
    }
}

private bool CheckForDuplicates()
{
    //check database

            if (/*there are duplicates*/)
            {
                string message = "A duplicate name exists. Would you like to continue?";
                string scriptString = "<script language='javascript' 
                    type='text/javascript'>" + "return confirm('" + message + "');</script>";

                ScriptManager.RegisterStartupScript(this, this.GetType(), 
                    "script", scriptString, false);

                //here i would like to return their confirmation
            }
        }
    }
    return true;
}

Любая помощь приветствуется и заранее благодарна!


person Houston Miller    schedule 13.06.2012    source источник


Ответы (1)


Добавьте Javascript, чтобы, если пользователь подтвердит, вы могли вызвать функцию JavaScript __doPostBack('','UserConfirmed');. Просто добавьте логику в свой программный код вместе с логикой подтверждения, которую вы регистрируете с помощью ScriptManager . Когда происходит обратная передача, вы можете проверить, действительно ли обратная передача была инициирована подтверждением пользователя (в отличие от какого-либо другого действия на странице):

public void Page_Load(object sender, EventArgs e)
{
  string parameter = Request["__EVENTARGUMENT"];
  //if parameter equals "UserConfirmed"
  //       User confirmed, so do whatever
  //
}

Информация о __doPostBack: Понимание функции JavaScript __doPostBack

person Jeremy    schedule 13.06.2012
comment
Спасибо! Я немного запутался с _doPostBack, но ваша ссылка действительно помогла. - person Houston Miller; 14.06.2012