ASP.net MVC 验证挂钩

2024-01-19

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

@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>
}

我将不显眼的 javascript 与 jQuery 和 Fluent Validation 框架结合使用。

当我单击“保存”按钮并且验证失败时,是否有一些事件我可以挂钩来调用一些自定义 JavaScript?

function validationFailed() {
    // do something here only if validation failed
}

我如何与验证联系起来,以便当它失败时(并且仅当它失败时)我可以调用我的validationFailed()函数。


正如 jQuery/Validation 文档所说,你可以使用无效处理程序当提交无效表单时做出反应。

但由于 MVC 不显眼的验证会实例化验证本身,因此您必须稍后挂钩此事件。

使用与 jQuery/Validation 完全相同的机制:您可以将代码绑定到表单元素自定义事件'无效表单.validate',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" })) {
} 

Update:

An alternative way to get the existing validation object is calling validate() on the form. If a validator for this form was already created, it will be returned:

编辑:初始化发生后,更改.settings.invalidHandler绑定已经太晚了。因此,除非您重新初始化验证器,否则以下代码片段将不再起作用。

$(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();
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.net MVC 验证挂钩 的相关文章

随机推荐

  • 在C++中读取和写入int到二进制文件

    我不清楚读取长整数是如何工作的 如果我说 long int a 1 666666 ofstream o ex ios binary o write char a sizeof a 将值存储到文件中并希望按原样读回它们 long int st
  • 如何比较 Objective C 中的两个 NSDate 对象

    我有日期类型的对象 我想比较一下 我写了一个if条件 如下所示 if startDate1 isEqualToDate self getDefaultDate startDate1 self getDefaultDate m selecte
  • 面向现有 .NET 开发人员的 Delphi 资源

    任何人都可以为希望获得 Delphi 语言高级概述的 NET 开发人员推荐一些不错的资源吗 我们即将收购一家小型企业 其主要产品是在德尔福开发的 我希望积累足够的知识以便能够与他们交谈 书籍 网站等都很受欢迎 Thanks Delphi基础
  • AngularJS 中使用 Promise 和 Defer 进行同步和异步调用

    我创建了以下控制器 其中有 2 个服务调用服务 第二个响应先于第一个响应 我想做的就像我需要第一个响应 然后第二个响应 但我只是坚持异步和同步请帮我解决 第二次调用取决于第一次调用 例如 如果第一个调用返回 10 条记录 那么我必须调用第二
  • 为什么我会收到一个 TypeError 提示“不带任何参数(给定 1 个)”? [复制]

    这个问题在这里已经有答案了 我有这段代码来实现粒子群优化算法 class Particle def init self domain ID self ID ID self gbest None self velocity self curr
  • 为 Qt 项目的多个架构生成 APK

    在 3d party APK 文件中 我注意到有不同架构的文件夹 armv7 arm64 x86 mips 因此单个 APK 适用于 Android 支持的多种架构 但是 我似乎没有找到一种方法来使用 Qt 项目来做到这一点 我有一个针对多
  • python脚本录制在线直播视频

    我正在开发一个脚本来下载在线直播视频 我的脚本 print Recording video response urllib2 urlopen streaming online video url filename time strftime
  • 带 JTable 的 JScrollpane 中的背景图像

    我试图在 JScrollPane 中的 JTable 后面添加居中背景图像 背景相对于视口的位置应该居中且静态 我尝试过将 JScrollPane 添加到带有绘制图像的 JPanel 中 并使其他所有内容变为半透明 但结果很丑陋并且存在渲染
  • 向与数据库交互的 Servlet 提交表单会导致空白页面

    我有一个从数据库检查用户名和密码的 servlet Override protected void doPost HttpServletRequest req HttpServletResponse res throws ServletEx
  • 生成PasswordHash和SecurityStamp

    我有一个Registrations新用户被放入的表 稍后的过程会为该用户创建一个数据库 并从注册表中的数据 电子邮件和姓名 插入 ASP NET Identity User 记录 我想扩展这一点 以便在注册时 用户可以输入密码 然后该密码将
  • Google 云端硬盘 SDK 和 iOS 5.1

    SDK 与 iOS 5 兼容还是仅与 iOS 6 兼容 Google 示例和 iOS 6 模拟器和设备 一切正常 但 Xcode 返回 iOS 5 1 模拟器和设备 运行时错误 我正在使用 Xcode 4 5 2 我已经检查了 iOS 部署
  • 我想摆脱 .rs.WorkingDataEnv 中的 cacheKey 错误

    Error in exists cacheKey where rs WorkingDataEnv inherits FALSE invalid first argument 我用的是rm R 中的函数可删除几个数据帧 他们已被成功删除 但是
  • 关闭 Windows 资源管理器的特定实例

    我在尝试时遇到问题WM CLOSE一个 Window 资源管理器进程 发送该消息将尝试关闭 Windows Shell 资源管理器进程并提示用户关闭窗口 这不是预期的行为 我想知道如何解决它 如何优雅地关闭各个资源管理器窗口 而不同时关闭整
  • 交叉编译 C++ 项目,通用 ELF 中的重定位 (EM: 3)

    我从事 C 项目已经有一段时间了 但想将其移植到我的 Arm 处理器上 我已经拥有所有交叉编译工具 我正在使用 CodeSourcery 并且认为我可以更改我的 makefile 以指向该编译器 它使用默认的 g 编译得很好 但是当尝试 m
  • 仅在 kernel.terminate 事件后返回响应

    我的理解kernel terminate是它触发了after响应已返回给客户端 在我的测试中 情况似乎并非如此 如果我放一个sleep 10 在 kernel terminate 上调用的函数中 浏览器也会等待 10 秒 处理似乎是在发送响
  • 动态数组和预建数据

    在C语言中 我尝试执行以下操作 typedef struct int length int items 1 wchararray t typedef struct long hash wchararray t chars 2 string
  • 另一个 KeyListener/KeyBinding 问题

    呃 我很抱歉 MadProgrammer 但我只是无法让 KeyBinding 按我想要的方式工作 但我会继续查看更多教程 直到我弄清楚 但现在我已经卡住了到 KeyListener 并且它可以工作 但现在我遇到一个问题p move 实际上
  • 停止 ng2-idle 进行量角器测试

    我在用着ng2 idle https github com HackedByChinese ng2 idle一段时间后自动注销用户 我在 appComponent 构造函数中初始化它 import Idle DEFAULT INTERRUP
  • v4.x 中的 d3.time.format.multi

    在我的代码的早期版本中 我曾经像这样设置适当的区域设置格式 format decimal thousands grouping 3 currency dateTime a b e X Y date d m Y time H M S peri
  • ASP.net MVC 验证挂钩

    我在 ASP net MVC 3 中有以下视图 model Models CreateProjectViewModel Scripts jquery validate min js gt Scripts jquery validate un