Проверка данных по запросу Поле ввода в Windows Phone

RadInputPrompt.Show("Enter the number", MessageBoxButtons.OK, message, InputMode.Text, textBoxStyle, closedHandler: (arg) =>
{
    int okButton = arg.ButtonIndex;
    if (okButton == 0) 
    {

          //do some check before submit
          if (string.IsNullOrEmpty(arg.Text))
          {
               MessageBox.Show("Please input the number.");
               return; //??
          }

          //submit
    }
    else
    {
        return;
    }
});

Мой вопрос: я делаю некоторую проверку данных (например: только цифры, количество цифр...) перед отправкой

Если ввод от пользователя будет вызван, я надеюсь, что Экран быстрого ввода все еще может остаться.
Если я использую ключевое слово return, оно вернется на главный экран.

Или есть ли другие способы проверки (что-то вроде AJAX?), Которые я могу использовать в этом приглашении вместо того, чтобы делать это на странице с выделенным кодом?

Большое спасибо!

1 ответ

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

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

ПРИМЕЧАНИЕ. Telerik говорит, что теперь вместо метода Show следует использовать метод ShowAsync, поскольку он устарел.

        string userInput = string.Empty;
        int okButton = 0;
        bool firstPass = true;
        double numericResult;

        while (okButton.Equals(0) && string.IsNullOrWhiteSpace(userInput))
        {
            string inputBoxTitle = (!firstPass) ? "Enter the number (you must enter a valid number)" : "Enter the number";

            InputPromptClosedEventArgs args = await RadInputPrompt.ShowAsync(inputBoxTitle, MessageBoxButtons.OKCancel);
            okButton = args.ButtonIndex;
            firstPass = false;

            if (okButton.Equals(0))
            {
                if (!string.IsNullOrWhiteSpace(args.Text))
                {
                    bool isNumeric = double.TryParse(args.Text, out numericResult);
                    if (isNumeric)
                    {
                        // We have good data, so assign it so we can get out of this loop
                        userInput = args.Text;
                    }
                }
            }
        }
Другие вопросы по тегам