问题标签 [asp.net-mvc-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 回答
361 浏览

regex - 使用 MVC 3 的正则表达式和其他验证

我需要在 MVC 中实现以下验证

1. 日期字段

  1. 字段只能接受 mm/dd/yyyy 格式,并且应该在 1753-9999 之间的年份范围内以及其他基本检查,例如叶年和 30、31 天

  2. 有时字段可以接受文本“N/A”(不适用)

  3. 日期也应该大于开始日期。

2. 数值字段

  1. 应该接受从 1 到 100 的有效数字,如果是十进制 0.1 到 99.99

  2. 可以接受 N/A

3.依赖字段

仅当另一个字段具有值时才需要此字段。

4. 触发器

  1. 如果此字段值是 A->B,那么它应该会影响其他可编辑的字段值。

    是否有任何 MVC 3 支持所有库?还是我将 万无一失和标准 MVC 验证结合起来?对实现我的上述需求有什么建议吗?

0 投票
2 回答
158 浏览

asp.net-mvc-3 - 在 MVC3 必填字段中点击非字符键会触发验证?

我注意到在登录视图中,当用户输入他们的电子邮件地址并快速切换到密码字段时,MVC3 所需的属性验证会触发。我拥有的代码非常大,但我已经能够用一个非常简单的页面来重现它。它类似于以下内容:

我有一个非常基本的视图,附有模型。该模型有 2 个属性,这两个属性都具有 [Required] 属性。如果您聚焦一个,并按下任何不输入任何字符的键(例如,Shift、Esc 等),所需的验证就会触发,并且我会收到错误消息,指出该字段是必需的,即使我没有输入什么都没有。

有谁知道如何防止这种早期验证被触发?

0 投票
1 回答
14169 浏览

asp.net-mvc - ValidationMessageFor 仅具有模型和 html 属性 - MVC 3

处理 MVC 3 应用程序。

我需要在验证消息 html 中添加一个类。我的意思是跨度标签。

我的模特

标记

但我看不到像 @Html.ValidationMessageFor(m => m.RoleName, htmlAttributes)这样的重载方法。如果我给出一些文本,它不会显示我在模型中输入的验证消息。它总是只显示一些文本。

有什么解决办法吗?

0 投票
1 回答
969 浏览

regex - 扩展 MVC FoolProof 验证

我想在我的 MVC 3 应用程序中使用MVC FoolProof Validation 。

我需要数字验证,也接受 N/A 或 n/a。所以我决定创建自己的自定义验证属性,例如NumericAllowNAAttribute,并添加一个 jQuery 验证自定义采用者方法。

我重新访问了 MVC Foolproof 并决定使用它,因为它已经有其他有用的方法构建。我也想要那些。现在我如何编写一个使用 jQuery 验证和服务器端在客户端工作的 CustomValidationAttribute?

在扩展 MVC Foolproof 上搜索谷歌我没有得到任何。

是否有人遇到过使用 jQuery 验证插件在服务器和客户端中扩展或实现这种验证工作?

0 投票
1 回答
1422 浏览

asp.net-mvc - MVC3 如何使用注释定义自定义错误消息?

我有一个 DateTime 字段(可以接受多种日期时间格式,因此创建 Regex 模式很痛苦)

当我在现场输入“Aaaaaa”之类的内容时,我收到错误消息:

模型外观:

看法:

如何为这个特定字段定义自定义错误消息?

谢谢

0 投票
1 回答
64 浏览

asp.net-mvc - 有没有一种方法可以简单地使用数据注释属性将 JavaScript 属性添加到表单字段?

我想向data-other-for文本输入添加一个属性,将其链接到一个选择,以便当用户在选择中选择“其他”时,它可以用于捕获选择中不存在的值。属性的代码将确定哪个值或描述实际上是“其他”,如果是,则启用文本输入并可能使其成为强制性。

似乎唯一的方法是创建一个新的助手,因为通过ValidationAttribute我只能将预设的验证 HTML 属性添加到我的文本输入中。或者变大并编写一个全新的元数据提供程序。

0 投票
2 回答
1048 浏览

asp.net-mvc - ASP.NET MVC 模型验证错误本地化上下文

首先,我必须说我了解基于数据注释的模型验证在 ASP.NET MVC4 中是如何工作的,并且我已经使用DataAnnotationsModelValidatorProvider. 所以我不需要帮助来设置它。

但是当它归结为 时HtmlHelpers,我正在努力尝试找出错误消息的上下文。并且说context,我的意思是我们正在谈论的错误。哪个属性返回了错误?

我能得到的是Key错误和当前的错误,ErrorMessage但以编程方式,至少我知道,没有什么可以传达我们正在谈论的错误。无论是Required属性还是其他属性,我都找不到如何区分它们的方法。

让我们稍微打开场景。我有自定义HtmlHelpers渲染ContentEditable元素。例如Html.ContentEditableValidationMessageFor(m => m.firstName);. 它将输出如下内容:

现在,我确实有一个 jQuery 插件来处理和持久化contenteditable元素中的更改,并将它们持久化到后端。但是,UI 没有任何内容可以说明我们正在谈论的错误消息。人类可以很容易地看到它是RequiredAttribute,但在编程上没有数据可以将它与某些数据区分开来MinLengthAttribute

在这种情况下,如果我只是将data-valmsg-for="firstName"用作本地化的键,那么对于与同一属性有关的所有错误都会返回相同的错误消息。

四舍五入

什么时候最好的做法ModelState是为 ModelError 发出唯一的 ID?考虑到我正在使用 ASP.NET MVC4 和DataAnnotationsModelValidatorProvider.

我可以想出很多“一起破解”的方法,但我想使用ModelStateMVC 提供的任何东西。如果这一切都归结为编写一个 custom ModelValidatorProvider,那么我完全愿意接受它。只要它是最好和最可持续的方式。我完全赞成现在做的比现在做的多,以后做的少,然后永远破解以保持工作

0 投票
2 回答
29399 浏览

asp.net-mvc - MVC 数据注释范围验证无法正常工作

我的RangeValidator模型中有一个属性,只允许 0 到 100 之间的整数。我有一个部分视图,显示一个表单以通过 jQuery UI 对话框更新属性。我查看了源代码,可以确认数据注释属性正在正确生成。但是,验证无法正常工作。它确实执行了某种验证,但没有使用我设置的范围。值 1、10 和 100 不会产生错误。任何其他一位或两位数的值都会产生错误。但是,如果我用零填充,所有小于 100 的值都可以。

模型:

局部视图:

产生的标记:

我看到类型设置为text,如果我TextBoxForEditorFor其更改为 ,number但我仍然看到相同的行为。

0 投票
3 回答
662 浏览

asp.net-mvc-3 - 作为字符串数组的字段名称列表 - LINQ 表达式

您好 MVC 和 LINQ 专家,

我有一个看起来像这样的模型:

如您所见,我正在调用 GetFieldNames,它接受一个表达式,并将表达式成员作为字符串数组返回给您。根据我最近阅读的一本书,将错误链接到字段的方法是将其作为字符串传递,如下所示:

但我想成为强类型,所以这是我写的方法:

当前使用情况:

GetFieldNames(() => new[] { this.SomeString , this.SomeString2 });

输出:

{ "SomeString" , "SomeString2" }

这工作正常。

问题是,如果我按如下方式使用它,它会给我一个错误(编译时):

GetFieldNames(() => new[] { this.SomeString , this.SomeInteger });

错误: No best type found for implicitly-typed array

我想要的输出:

{ "SomeString" , "SomeInteger" }

我不能传入对象数组,因为 int 不是复杂类型。

如何使用intand向函数传递表达式数组string

0 投票
0 回答
316 浏览

c# - 客户端验证在共享主机上不起作用,但在调试时起作用

我在模型类中有以下属性:

标记(剃刀):

生成的 HTML 代码为:

但是,如果我只键入一个数字并单击已发布的共享主机站点上的另一个输入框,则不会出现错误消息。Invalid social security number使用 Visual Studio 2012(Chrome 浏览器)进行调试时将显示错误消息。什么可能导致问题?

更新: 在我的本地 PC(Visual Studio 调试)上生成的 html 代码是。

似乎我的本地 PC 的 html 代码class="input-validation-error"在主机站点上不存在?