问题标签 [unobtrusive-validation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1051 浏览

asp.net-mvc-3 - MVC3 不显眼的验证产生的 HTML5 表单属性好吗?

我一直在看 MVC3 Unobtrusive Validation。

诸如此类的属性附加到表单输入元素:

我读过的关于 MVC3 不显眼验证的博客文章说它是有效的 HTML5。但是,我查看了 W3C HTML5 规范,但在那里看不到这些属性.. http://www.w3.org/TR/2011/WD-html5-20110525/

我喜欢这些属性的作用,启用客户端 jQuery 验证。但它们是有效的 HTML5 吗?或者它们会导致浏览器和搜索引擎出现问题?

0 投票
1 回答
3372 浏览

c# - MVC3 Unobtrusive Validation 不适用于自定义 DataAnnotations 属性

我有一个自定义属性,它目前是 DataAnnotations.RequiredAttribute 的简单包装器(稍后我将对其进行扩展,但现在只是想让这个概念证明工作)。但是,这不适用于 MVC3 不显眼的验证。

这是一个非常简单的问题,真的。

这是我的自定义属性:

这里有两个模型属性,一个使用自定义属性,一个使用 DataAnnotations 属性:

这是剃刀代码:

这是结果输出:

如您所见,FirstName(使用 DataAnnotations)使用验证器所需的必要 html 属性呈现,但 LastName(使用 CustomValidationAttributes)缺少data-val-requiredand data-val attributes

我做错了什么,还是 MVC3 不显眼的验证不支持这一点?

提前致谢。

0 投票
1 回答
8838 浏览

jquery - 在 jquery ajax post 上使用 mvc 3 进行不显眼的验证时遇到问题

我在验证 MVC3 上工作时遇到了很多麻烦。当我直接加载页面时它工作正常,但当我使用 jquery AJAX POST 时它不会验证:

此表单是使用 加载的$('#modal-dialog').load('/DartsMVC/Restaurant/Edit/13'),这是呈现的 HTML:

通过拦截表单/提交来使用 AJAX POST。模态对话框会在帖子完成后弹出并自行关闭。我想在发送帖子之前验证表格:

我这样做是否破坏了某些东西? .valid()总是返回真。

我的 web.config 有:

我的页面来源有:

我的模型有:

经过更多研究,我认为这可能与动态控制有关:

0 投票
3 回答
4983 浏览

jquery - 带有子集合的 ASP.NET MVC 3 不显眼的 jQuery 客户端验证

相关问题:

我有一个 ASP.NET MVC 视图呈现用户可以添加到的项目集合:-

“ChildRow”部分如下:-

我正在使用 jQuery 来获取代表行的部分:-

我遇到的问题是客户端验证不适用于 jQuery 添加的行。正如您从我的脚本中看到的那样,我在 ajax 调用之后在表单上运行验证器。据我环顾四周,问题在于 Html.BeginForm() 调用不在 ajax 部分上,因此验证属性没有被添加到输入元素中。即,如果我在添加一行后查看标记:-

页面加载时存在的输入如下所示:-

通过 ajax 添加的输入如下所示:-

显然,由于表单的性质,我无法将 Html.BeginForm 调用移动到我的局部视图上。由于页面是通过 ajax 加载的,所以我也不能破解我部分的 FormContext。

还有另一种方法可以启用客户端验证吗?

编辑

根据下面的辅导员本的回答,我设置了 FormContext,现在属性可以正确呈现,但是验证仍然无法正常工作(如果我添加新行并将文本框留空,应用程序首先会注意到我的断点在编辑 POST 操作被击中)。

我做了一些测试,肯定会调用 $.validator.unobtrusive.parse 函数,对于表中的新输入数量,肯定调用parseElement 函数正确的次数,并且行“info.attachValidation( );" 再往下,解析功能肯定会被击中。这就是我所知道的。还在测试。

0 投票
5 回答
27810 浏览

c# - Ajax 调用后 MVC3 不显眼的验证不起作用

好的,这是交易,我在 SO 上看到了一些与此问题相关的帖子,但没有什么对我有用。

基本上,我选择了从部分视图加载的下拉菜单,我试图根据先前选择的下拉菜单过滤每个后续下拉菜单的内容。

如果我只是将调用放在 div 容器中的局部视图并加载页面,则数据注释的验证工作正常,主要是 Required 属性

但是,如果我尝试通过 AJAX 加载与此处设置相同的部分,则必需的验证不起作用,任何人都可以在此之后发布表单和 KABOOM。

我发现有人说,在 Success 回调中,您需要让客户端验证器重新解析表单,我正在尝试,但它似乎不起作用。

我有一个看起来像这样的视图......

部分视图非常简单,它们基本上看起来像这样......

同样,如果我只是 RenderPartial,验证工作正常,但是当我尝试通过 ajax 进行验证时,验证就会消失。“重新绑定验证”警报触发,但 $.validator.unobtrusive.parse("#frmAddItem"); 似乎没有做任何事情。

任何人都可以帮助我缺少什么吗?这将不胜感激。

<========================更新1 ======================= =====>

好的,我尝试添加 $.validator.unobtrusive.parse("#frmAddItem"); 在文档就绪事件中的部分视图的底部,它似乎也不起作用,基本上没有任何改变,我仍然可以提交表单。

我确实在这里找到了一个帖子: http: //xhalent.wordpress.com/2011/01/24/applying-unobtrusive-validation-to-dynamic-content/提到当jqvalidation的MVC版本看到一个表格时已经有了绑定到它的验证规则,它只是忽略 .validator 调用。我实现了这位先生使用的脚本扩展,现在验证正在使用新扩展重新绑定到表单。我可以通过将 html 附加到表单并调用新的扩展来测试它,它重新绑定到新的文本框。

但是,这仍然没有完全解决问题。我使用 Firebug 检查了从 ajax 调用返回的字段上的实际内容,并注意到一些非常奇怪的事情。

当我使用 RenderPartial 调用操作时,它会写出以下 select :

但是,当我对相同的控制器操作进行 ajax 调用时,它会返回:

我也尝试将脚本标签添加到局部视图,但它没有解决问题。ajax 调用会剥离不显眼的验证标签是否有某种原因?

<======================= 更新2 ======================== =====>

好的,所以发生了什么,我有一个下拉编辑器模板,它采用选择列表并将其转换为 html 选择。我发现一篇文章提到,为了在编辑器模板上写出数据验证属性,你必须有一个表单上下文。由于 Html.RenderPartial 是在表单中完成的,因此编辑器模板具有可以使用的表单上下文。当我只是试图通过 ajax 调用部分时,没有可以使用的表单上下文,而不是抱怨它只是没有写出数据验证属性。在 SelectListDropDown 的编辑器模板中添加新的表单上下文解决了这个问题。

0 投票
1 回答
1558 浏览

asp.net-mvc - MVC正则表达式注释不同的结果客户端-服务器

我正在使用不显眼的客户端验证。

我有一个带有以下数据注释的 ViewModel

问题是客户端验证工作正常,使我能够在我的字段中输入例如 12:20 而不是 25:20。

但是在服务器上,如果我询问 ModelState.IsValid,我会在现场收到错误消息。

似乎问题位于我的正则表达式中的冒号之前。如果我将表达式更改为

它工作正常。

但如果我有

它仍然不会在服务器上接受它。通过客户端验证,这些更改按预期工作。

客户端正则表达式解析和服务器端有区别吗?好像有点坑?!

谢谢

0 投票
2 回答
1650 浏览

asp.net-mvc-3 - 是否可以在单个属性上使用 2 个远程验证属性?

是否可以在视图模型中的单个属性上使用 2 个远程验证属性?

我想做的是执行 2 次检查,首先是数据库中存在给定的用户 ID,其次是用户尚未在系统上设置帐户。

我想我总是可以制作一个包含两个测试的自定义属性,但如果可能的话,我宁愿只使用开箱即用的功能并将验证链接在一起。

我不能真正将逻辑组合成一个 JsonResult,因为我需要根据验证失败的方式有不同的错误消息,并且 AFAIK 不可能返回带有验证结果的错误消息?

0 投票
0 回答
994 浏览

asp.net-mvc-3 - MVC3、Ajax 和带有客户端不显眼验证的模态表单

我无法让标题中的事物组合在一起。我已经阅读了各种问题,但没有找到涵盖我正在尝试做的所有事情的问题。

我将 jqModal 用于我的模态窗口。我正在使用 Ajax.BeginForm。我的模型装饰有[Required][Display(...)]

这些东西都被放置在一个页面上@Html.RenderAction(...)

根据我是使用OnBegin还是OnComplete在 ajax 调用中,我要么没有得到客户端验证(只是不进行更新),要么模态卡在整个页面“模态输出”而没有对话框的状态中地方。但实际上,如果存在客户端或服务器端验证错误,我想要的是让模态保持原位。

该站点不需要任何功能即可在没有可用/启用 javascript 的情况下运行。

头:

该模型:

编辑器模板(这包含一些扩展方法,但它们与问题无关,所以请忽略):

视图(一个页面上可能有很多,并且它们可能会重复,所以我使用 Guids 来保证唯一性):

控制器方法:

很抱歉这篇文章很长,但我看到其他人提到这不是一件坏事!如果需要,很高兴发布任何其他代码/信息。我可能错过了一些东西,因为我从项目中的几个位置复制/粘贴。

提前致谢。

0 投票
1 回答
717 浏览

model-view-controller - 使用不显眼的 jquery 在 MVC 3.0 中未清除验证消息

我正在尝试在我正在开发的 Web 应用程序中实现一个简单的客户端验证,并且实际的验证消息正在工作。但是,当我更正不正确的输入并且控件失去焦点时,验证消息不会清除并且无效类仍保留在控件上。这是相关的视图代码

和视图模型属性

正如我之前提到的,一旦注释变得太长并且控件失去焦点,错误消息就会按预期出现。但是,当错误得到修复时,错误消息不会消失并且控件保持红色。我的 _Layout 页面以正确的顺序包含相关的脚本文件,并且我的配置文件的 appSetting 变量设置正确。知道出了什么问题或我应该在哪里寻找问题吗?非常感谢您的任何建议。

0 投票
3 回答
1882 浏览

asp.net-mvc-3 - MVC3 自定义不显眼验证 - 从复选框强制验证

我有以下用于自定义验证的类:

我的视图模型是:

当我的强类型视图呈现时,一切看起来都正常。如果选择了 PropABC 或 PropXYZ,那么我需要为 TestField 输入一个值。客户端和服务器端验证都是有效的。

但是,鉴于以下事件顺序:

  1. 检查 PropABC
  2. 提交表格
  3. 需要 TestField 的客户端验证触发
  4. 取消选中 PropABC
  5. 客户端验证不会重新触发,并且验证消息会一直保留到表单提交

为了解决#5,我通常会通过 jquery onread 将点击事件附加到复选框以重新启动验证。

在给定 MVC3 + unobtrusive + jquery 的情况下,是否有首选/推荐的手动强制客户端验证方式?