#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;
}