0
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;
    }
});

私の質問は次のとおりです。送信前にいくつかのデータ検証(数値のみ、桁数など)を行います。

ユーザーからの入力が無効な場合、プロンプト入力画面がまだ残っていることを願っています。
「戻る」キーワードを使用すると、メイン画面に戻ります。

または、コード ビハインド ページではなく、このプロンプト画面で使用できる他の検証方法 (AJAX など) はありますか?

どうもありがとう!

4

1 に答える 1

0

1 つの手法は、ユーザーが [OK] をクリックするたびにループして入力プロンプトを表示し続けることですが、入力の検証に失敗します。以下の例では、結果が有効な数値でない場合に入力テキスト ボックスが繰り返されます。

また、無効な送信があった場合に以前の入力が受け入れられなかったことを示す何らかのフィードバックをユーザーに追加することもお勧めします。以下の例では、最初の無効な送信後に入力テキスト ボックスのタイトルが変更され、入力値が有効な数値でなければならないことを示すテキストが含まれています。

注: Telerik は、Show メソッドは非推奨であるため、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;
                    }
                }
            }
        }
于 2013-07-06T12:05:16.157 に答える