如何以编程方式触发Razor视图设置的客户端验证?

Pro*_*ofK 12 asp.net-mvc jquery-validate asp.net-mvc-4 knockout.js

我有一个小的Ajax应用程序,我使用Razor视图来初始生成HTML表单段,我稍后使用knockout.js读取和写入.虽然我没有执行非Ajax操作请求,但我使用Razor生成HTML,因此我喜欢自动生成jQuery Validation属性.例如,在我的单个页面中,我渲染一个隐藏的表单,如下所示:

<section id="person-detail">
    @Html.Action("EditPartial", "Person")
</section>
Run Code Online (Sandbox Code Playgroud)

EditPartial操作返回一个看起来很像这样的局部视图:

@using (Html.BeginForm())
{
    <fieldset>
        @Html.HiddenFor(model => model.Id, new { data_bind = "value: id" })
        <div class="editor-label">
            @Html.LabelFor(model => model.FirstName)
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(model => model.FirstName, new { data_bind = "value: firstName" })
            @Html.ValidationMessageFor(model => model.FirstName)
        </div>
        <p>            
            <a href="#" data-bind="click: save">Update</a>&nbsp;&nbsp;
            <a href="#" data-bind="click: delete">Delete</a>
        </p>
    </fieldset>
}
Run Code Online (Sandbox Code Playgroud)

因为我实际上从未发布过表单,并且由于一些未知数,尽管我的Person模型上的所有属性都标有Required属性,但我看不到客户端验证的迹象.单击我的保存按钮时,我该怎么做才能触发此验证?

Sha*_*eKm 15

假设您的表单有一个类'main':

    $('form').submit(function() {
            var $form = $('form.main');
            $form.valid();
    });
Run Code Online (Sandbox Code Playgroud)