標準の MVC 3.0 テンプレート検証 (jquery.validate.min.js および jquery.validate.unobtrusive.min.js) を使用するフォームがあります。次のように、[Required] 属性を持つ単一の文字列属性で構成されるモデルがあります。
public class TestViewModel
{
[Required]
public string Testing { get; set; }
}
フィールドと検証メッセージを表示するフォームを含むそれぞれのビュー Test.cshtml もあります
@model RealEstate.ViewModels.TestViewModel
@using (Html.BeginForm())
{
<fieldset>
<div class="editor-label">@Html.LabelFor(m => m.Testing)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.Testing)
@Html.ValidationMessageFor(model => model.Testing)
</div>
<p>
<button type="submit" name="buttonValue" value="Ok">Ok</button>
</p>
</fieldset>
}
コントローラーでは、次のようにビューを呼び出しています。
return View("Test");
問題は、特定のフォームで、フォームが読み込まれるとすぐに検証メッセージが表示されることに気付いていたことです (期待されるポストバック後ではありません)。他の形式では、同じセットアップが適切に機能していました。この問題をさらに調査すると、奇妙なことに、動作が属性名によって決定されることがわかりました。たとえば、属性に "Description" という名前を付けると (モデルとビューの両方で)、検証が正しく機能しませんが、属性に "Testing" という名前を付けると (例のように)、すべて正常に動作します。誰かが同じ問題に遭遇しましたか?