1

標準の 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" という名前を付けると (例のように)、すべて正常に動作します。誰かが同じ問題に遭遇しましたか?

4

0 に答える 0