gpt4 book ai didi

asp.net-mvc - ASP.net MVC 验证钩子(Hook)

转载 作者:行者123 更新时间:2023-12-03 13:20:28 25 4
gpt4 key购买 nike

我在 ASP.net MVC 3 中有以下 View :

@model Models.CreateProjectViewModel

<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>

@using( Html.BeginForm() ) {
@Html.TextBoxFor(m => m.ProjectName)
@Html.ValidationMessageFor(m => m.ProjectName)

<p>
<input type="submit" value="Save" />
</p>
}

我正在使用带有 jQ​​uery 和 Fluent Validation 框架的不显眼的 javascript。

当我单击“保存”按钮并且验证失败时,是否有一些事件可以 Hook 来调用一些自定义 javascript?
function validationFailed() {
// do something here only if validation failed
}

我将如何绑定(bind)验证,以便在它失败时(并且只有在它失败时)我可以调用我的 validationFailed() 函数。

最佳答案

正如 jQuery/Validation 文档所说,您可以使用 无效处理程序 在提交无效表单时使用react。

但是由于 MVC 不显眼的验证实例化了 Validation 本身,因此您必须稍后 Hook 此事件。

使用与 jQuery/Validation 完全相同的机制:您可以将代码绑定(bind)到表单元素自定义事件 ' 无效的形式。验证 ',witch对应的是invalidHandler!

$(document).ready(function() {
$('#myform').bind('invalid-form.validate',function(){
alert('invalid form!');
});
});

给你的表格一个 id 使用:
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "myform" })) {
}

更新:

获取现有验证对象的另一种方法是调用 验证()在表格上。如果此表单的验证器 已创建 ,它将被返回:

编辑:初始化发生后,更改 .settings.invalidHandler绑定(bind)为时已晚。因此,除非您重新初始化验证器,否则以下代码段将 [不再] 起作用。
$(document).ready(function() {
var existingValdiation = $("#myform").validate();
//the settings property corresponds to the options parameter
existingValdiation.settings.invalidHandler = function (form) {
alert('invalid form!');
};
// not recommended:
// re-init would bind settings.invalidHandler to 'invalid-form.validate'
// existingValdiation.init();
});

关于asp.net-mvc - ASP.net MVC 验证钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7651576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com