2012-02-13 2 views
1

コレクション内のアイテムのプロパティにDataAnnotations RegularExpression属性を使用しようとしています - FieldオブジェクトにはFormatterオブジェクトのコレクションがあり、 Valueプロパティを持つAttributesのコレクション。MVC3正規表現による邪魔にならない妥当性検査は、常に失敗して初めて動作します。

私の属性ビューモデルクラスの中では、私が持っている:

[RegularExpression(@"^\d+$", ErrorMessage = "That didn't do what you hoped it would do")] 
public string Value { get; set; } 

私は私の見解では、この持っている:

@Html.TextBoxFor(x => x.Formatters[fmt].Attributes[att].Value) 

をし、それがこのマークアップを生成します。

<input type="text" value=" " name="Formatters[1].Attributes[0].Value" data-val-regex-pattern="^\d+$" data-val-regex="That didn't do what you hoped it would do" data-val="true" > 

のすべてそれは正しいようですが、検証は常に最初に失敗します。テキストボックスに23を入力してタブアウトすると、検証イベントが発生し、私が望むように物事が進まないことが伝えられます。フィールドに戻って正確に同じ値を入力すると、それは機能します。私が手紙を入力すると、それはまだ失敗します。

誰かが私が間違っているとは何か考えているか、または検証を最初に振る舞うように強制することができますか?なぜなら、トップレベルのプロパティに同じ検証属性を設定すると、それは必要に応じて機能するためです。

ありがとうございます!

+0

控えめな検証jsファイルの行まで追跡しました。 "match = new RegExp(params).exec(value);" RegExp.execは最初にnullを返し、その後は毎回値を返します。 –

+0

それは変です。私は問題を再現できません。あなたは、あなたのビューモデル、コントローラー、ビューの絞り込みの例を提供してください。 –

答えて

0

この問題は、私のラップトップの仕事では分かりません。私は昨夜自宅でコンピュータのカップルにコードをプルダウンし、すべてが期待どおりに動作します。

私はまだ何が起こっているのか分かりませんが、誰かが私にハンマーを貸していない限り、これはコミュニティが解決するのに役立つものではないと思います。

深く掘り下げようとしているDarinに感謝してくれてありがとう。