プロジェクトを MVC3 から MVC4 にアップグレードしたところ、バリデーターの 1 つがトリガーされなくなっていることに気付きました。サイト全体でさまざまな形式で社会保障番号を取得するために使用される Shared/EditorTemplates フォルダー内のカスタム DataType まで追跡しました。(正規表現を説明するために、保存後にページが読み込まれるときに最後の 4 桁のみを表示します。)
SSN.cshtml
@{
var ssn = (string)ViewData.TemplateInfo.FormattedModelValue;
if (!String.IsNullOrWhiteSpace(ssn)){
ssn = "###-##-" + Model.Substring(Model.Length - 4, 4);
}
}
@Html.TextBox("", ssn, new { @class = "text-box single-line ssn", pattern = @"^(\d{3}|###)-(\d{2}|##)-\d{4}$", placeholder = "###-##-####", title = "Expected pattern is ###-##-####" })
MVC4 では、目立たない検証では、data-val-regex-patternだけでなく、表示されたテキスト ボックスの属性としてpatternを探しているようです。誰もこれに遭遇したことがありますか?
注: カスタム データ型の検証を維持したいので、各モデルに追加することを常に覚えておく必要はありません。
ありがとう!