Asp.net подсчитать попытку пользователя

#c# #asp.net

#c# #asp.net

Вопрос:

Я новичок в ASP.net Это может быть простой вопрос, но я не знаю, как это сделать. У меня есть элемент управления asp.wizard на моей странице, где на «шаге 1» у меня есть одно текстовое поле, которое принимает номер заказа, если пользователь вводит номер заказа в текстовое поле и он совпадает с базой данных, это переводит пользователя на шаг мастера 2. Если пользователь ввел неправильное значение или оставил его пустым, элементы управления проверки предупреждают о необходимости ввода значения или введенное значение неверно. Однако меня беспокоит то, что если пользователь попытается ввести значение более трех раз, он должен показать всплывающее окно и сказать сообщение «вы пытались три раза, и у вас нет действительного номера заказа» Я попытался увеличить свой счетчик в функции события serverValidate, но он сбрасывает значение счетчика на 0 при каждой обратной отправке страницы. Теперь я не знаю, как это сделать, поскольку каждый раз, когда моя страница возвращается после нажатия кнопки далее на моей странице мастера, значение моего счетчика сбрасывается на 0

Ответ №1:

Вы можете сохранить это в переменной сеанса, которую никто не будет сбрасывать.

Комментарии:

1. пожалуйста, предоставьте код, где я должен использовать session на page_load или где и как. Я действительно новичок в asp.net .

2. как это сделать в сеансе. Я пытался сохранить в сеансе в моем событии page_load, но его session указан правильно в текущем контексте ViewState («myCounter»)

Ответ №2:

 <input type="hidden" id="hdn" runat="server" value="0" />
  

В оставшемся коде после каждой неудачной попытки:

 hdn.Value="" (ConvertToInt32(hdn.Value) 1);
if(hdn.Value=="3")
// do something
  

Комментарии:

1. спасибо за быстрый ответ, но где я помещаю этот код в свой файл code behind. при событии page_load или где

2. @uture: разметка ( <input type="hidden" ... ) в любом месте вашей формы. Код, стоящий за этим, прямо при выполнении проверки в базе данных, чтобы убедиться, что введенный номер заказа был точным.

3. выдает ошибку при hdn.Value=»» int.Parse (hdn.Value) 1; Входная строка была в неправильном формате.

4. @будущая попытка: hdn.Value="" (ConvertToInt32(hdn.Value) 1);

5. Ошибка Имя ‘ConvertToInt32’ не существует в текущем контексте

Ответ №3:

Храните свой счетчик в скрытом текстовом поле. Таким образом, значение сохранит обратную отправку. Вы можете увеличить счетчик либо в javascript (когда пользователь нажимает кнопку), либо на сервере.

Вот примерный фреймворк:

Добавьте на свою страницу поле, подобное следующему:

     <input type="hidden" runat="server" id="txtCounter" />
  

В вашем коде-за:

 if String.IsNullOrEmpty(txtCounter.Value) {
   txtCounter.Value = "1";
} else {
   int wCounter;
   wCounter = Convert.ToInt32(txtCounter.Value);
   if (wCounter >= 3) {
     Page.ClientScript.RegisterStartupScript(Page.GetType(), "Count Exceeded", "alert('The number of tries has been exceeded.');", True)

   } else {
     wCounter  = 1;
     txtCounter.Value = wCounter.ToString();
   }
}
  

Комментарии:

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

2. Погуглите, и у вас под рукой будет несколько примеров

3. куда я должен поместить этот код за кодом. при событии page_load или где

4. Я использовал этот код в своем событии next_button click, и он выдает всплывающее окно после третьей попытки

5. это не дает никакого всплывающего окна извините за комментарий выше, я имел в виду, не дает никакого всплывающего окна

Ответ №4:

 if (Wizard1.ActiveStepIndex == 0)
    {
        if ((HiddenField1.Value == "0")){
            HiddenField1.Value = "1";
    }
        else if ((HiddenField1.Value == "1"))
      {
          HiddenField1.Value = "2";
      }

      else if ((HiddenField1.Value == "2"))
      {
          HiddenField1.Value = "3";

          Response.Write("<script language='javascript'>alert('you tried 3 times')</script>");
          }



    Label21.Text = HiddenField1.Value;
    }