【发布时间】:2012-10-05 19:17:54
【问题描述】:
我有一个小的 Ajax 应用程序,我在其中使用 Razor 视图来最初生成 HTML 表单片段,然后我使用 knockout.js 读取和写入这些片段。虽然我没有执行非 Ajax 操作请求,但我使用 Razor 生成 HTML,因此我喜欢自动生成 jQuery Validation 属性。例如。在我的单页中,我呈现了一个这样的隐藏表单:
<section id="person-detail">
@Html.Action("EditPartial", "Person")
</section>
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>
<a href="#" data-bind="click: delete">Delete</a>
</p>
</fieldset>
}
因为我从未真正发布过表单,并且由于一些未知因素,尽管我的 Person 模型上的所有属性都标有 Required 属性,我看不到客户端验证的迹象。当我的保存按钮被点击时,我必须怎么做才能触发这个验证?
【问题讨论】:
-
你试过
$("form").validate()吗?或$("form").valid()? -
是的,但是
Object [object Object] has no method 'validate'。valid()也一样。 -
您确定页面上同时引用了 jQuery 和不显眼的 jQuery 验证脚本吗?
-
你能告诉我们实际发送到浏览器的HTML吗?您在 Razor 视图中显示
EditPartial。实际的 HTML 将具有您可以查找的data-*属性。这些是渲染的吗? -
Object [object Object] has no method 'validate' 是页面上未引用 jquery validate 时的错误消息。在我看来,这与 Razor 或 knockout.js 无关
标签: asp.net-mvc knockout.js jquery-validate asp.net-mvc-4