1

WebアプリにRazorフォームがあります。クライアントとのミーティング中に、このフォームのフィールドの1つが次の入力を受け入れる必要があることを学びました。

  • カンマ区切りの数字のリスト
  • ダッシュを使用して表された数値の範囲を含む

たとえば、エンドユーザーは45,50-53,65、45、50、51、52、53、65の数字のリストを表すために入力する場合があります。テキストボックスには、無視する必要のある任意の空白も含まれる可能性があると想定しています(したがって45, 50-53, 65、同じものを表します)。情報)。

Razorを使用してMVC4でこのようなテキストボックスを設定するにはどうすればよいですか?特に、

  1. Razorビューでテキストボックスを作成するにはどうすればよいですか?
  2. モデルのテキストボックスの情報をどのように表現しますか?
  3. テキストボックスをモデルにデータバインドするにはどうすればよいですか?
  4. テキストボックスの検証をどのように設定しますか?
4

1 に答える 1

1
  1. 通常のテキストボックスを作成します-数字の文字列を要求しています
  2. フォーム値を文字列として使用し、次に文字列の解析バージョンである別のプロパティ、int[]を使用できます。
  3. 文字列なので、文字列として投稿できます。
  4. バリデーターには正規表現を使用してください。

2の場合、モデルで次のようなことを行うことができます。

public string Numbers { get; set; }
public int[] ParsedNumbers
{
    get
    {
        Func<int[], int[]> arrayToRange = (range) =>
        {
            if (range.Length == 1) return range;
            int[] ret = new int[range[1] - range[0] + 1];
            for (int i = 0; i < ret.Length; i++)
            {
                ret[i] = i + range[0];
            }
            return ret;
        };

        return this.Numbers
                    .Replace(" ", "")
                    .Split(',')
                    .SelectMany(n => arrayToRange(n.Split('-')
                        .Select(n2 => int.Parse(n2)).ToArray())).ToArray();
    }
}

4の場合、次の正規表現を使用できます。

^(\d(\-\d)?(, ?)?)*$
于 2012-11-15T20:51:51.497 に答える