问题标签 [xval]

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 回答
654 浏览

asp.net-mvc - 从 xVal 切换到 nHibernate 验证

我有一个带有 xVal 和数据注释的 ASP.NET MVC 项目,我需要切换到 nHibernate Validation。使用数据注释我有一个DataAnnotationsValidationRunner,我正在做这样的事情:

你如何用 nHibernate.Validator 做到这一点?

更新:我看到了这样的东西:

但我做不到

因为错误的类型不正确 ( xVal.ServerSide.ErrorInfo)。

0 投票
4 回答
5188 浏览

asp.net-mvc - 根据外部因素验证对象(即数据存储唯一性)

描述

我的解决方案有这些项目:

  • DAL = 修改后的实体框架
  • DTO = 能够自我验证的数据传输对象
  • BL = 业务层服务
  • WEB = 演示 Asp.net MVC 应用程序

DAL、BL 和 WEB 都参考了 DTO,这很棒。
该过程通常以这种方式执行:

  1. 向 WEB 发出 Web 请求
  2. WEB 发布 DTO
    • DTO 通过自定义 ActionFilter 自动验证
    • 自动收集验证错误
  3. (验证OK)WEB调用BL提供DTO
  4. BL 使用 DTO 调用 DAL(可以通过它们或仅使用它们)

DTO验证问题然后......

我的 DTO 能够根据自己的状态(属性值)验证自己。但是现在,当情况并非如此时,我遇到了一个问题。我需要他们使用 BL(以及因此 DAL)进行验证。

我的真实示例:用户注册并且 WEB 获得了一个经过验证的用户 DTO。有问题的部分是username验证。应根据数据存储检查其唯一性。
我该怎么做?

还有其他信息表明,所有 DTO 都为 IoC 目的和 TDD实现了一个接口(即UserDTO 实现)。IUser两者都是DTO 项目的一部分。

不可能的尝试

  1. 我不能在 DTO 中引用 BL,因为我会得到循环引用。
    Compilation error
  2. 我无法创建一个额外的 DTO.Val 项目来引用部分 DTO 类并在那里实现它们的验证(他们会引用 BL + DTO)。
    Partial classes can't span assemblies.

可能的尝试

  1. 创建一个特殊ActionFilter的,可以根据外部条件验证对象。这将在WEB 项目中创建,因此可以看到将在此处使用的 DTO 和 BL。
  2. 将 DTO 放在 BL 中,并将 DTO 接口保留为其他项目引用的实际 DTO,并重构所有代码以使用接口而不是具体类。
  3. 不要处理外部依赖验证,让外部依赖抛出异常——这可能是这个问题最糟糕的解决方案

你有什么建议?

0 投票
3 回答
400 浏览

asp.net-mvc - 具有强类型视图模型的 ASP.NET MVC xVal

我无法让xVal 验证与强类型视图模型一起使用。

xVal 中的每个方法似乎都需要一个在处理强类型视图模型时不使用的前缀。

我的视图包含与此类似的代码:

以下代码进入控制器:

但是,上面的代码不起作用。我肯定错过了一些东西,但不知道是什么。这是我第一次使用 xVal。

感谢您的帮助!

0 投票
1 回答
571 浏览

asp.net-mvc - 在带有 Spark View Engine 的 ASP.NET MVC 中,表单提交错误为什么我找不到 404 资源?

我的观点:

/用户/编辑用户名/2/我

控制器动作:

return View() 似乎不起作用,因为它重定向到

/用户/编辑用户名

并给我一个 404 错误。怎么回事?我正在使用 xVal 进行验证,而这方面的一切工作都无法让它重新显示前一页,并在框中显示用户输入的信息。有人知道我在做什么错吗?这快把我逼疯了!

编辑

我不确定这是否是 Spark 中的错误或到底发生了什么。一旦我添加了一个 EditUserName.aspx 页面,我就不会再收到 404 错误并且它工作正常,通过重新显示页面没问题???其他人怎么没有遇到这个问题?我已经阅读了我能找到的所有内容,并且我认为我正在做的事情没有任何问题。为什么它可以与常规视图引擎一起使用?因此,我不想切换回仅将另一个用于用户输入,但我觉得我在这里别无选择。

看法:

0 投票
2 回答
2091 浏览

asp.net-mvc - 属性中未硬编码的 MVC 验证错误消息

我要求传递给我的视图的验证错误消息来自数据库。

我想在我的模型上使用数据注释,但验证属性中的错误消息键只能是字符串或常量。

我对其他验证解决方案持开放态度,但我需要从数据库中提取错误消息。

如果错误消息不是字符串,是否还有其他有效的验证解决方案?现在我正在考虑使用 T4 来生成一个常量文件......

0 投票
3 回答
929 浏览

asp.net-mvc - 哪个 MVC 验证框架

我一直在评估 xVal 作为在 ASP.Net MVC 框架中验证实体的框架。我最近发现,每次验证规则被破坏时,xVal 都会引发异常。对我来说似乎不正确。例如,当用户填写表单时,忘记填写三个必填字段,将引发三个异常。这是好习惯吗?(编辑:我也读过这个,所以我想这不是一个好习惯)

您使用 xVal 的经验是什么?有没有很好的替代验证框架不会抛出异常?

谢谢

(PS:我注意到很多人都在阅读这篇文章,只是为了让你知道我现在正在使用 Fluent Validation

0 投票
1 回答
444 浏览

c# - xVal 和 jQuery 提交按钮

我有一个简单的表格。它有一个字段和一个提交按钮。我隐藏了提交按钮。提交按钮实际上是由一个锚标记触发的,该标记调用一个 javascript 方法,该方法使用 jQuery 获取元素并执行 click()。这工作正常,表单帖子和记录已成功写入数据库。

所以现在我添加了 xVal 进行验证。我正在尝试添加简单的客户端验证。

当我单击锚标记时它不起作用。但是,如果我取消隐藏提交按钮并尝试使用该按钮发布表单,而不是使用调用 js 方法的锚标记,它确实有效。所以基本上我想弄清楚为什么当我使用js方法触发提交按钮的点击时它不起作用。

有什么宏大的想法吗?非常感谢!

这是一些代码...

Javascript:

0 投票
1 回答
183 浏览

c# - xVal 和验证多行数据

我有一个表名 Discount,它具有以下架构:

PK DiscountID int

FK 客户 ID 整数

金额

名称 varchar(50)

所以我显示了与客户相关的所有折扣。每个客户将有 3 条折扣记录。

当我生成表单时,用于编辑的关联文本框的 ID 和名称必须是唯一的才能正确处理。

例子

当我尝试使用 xVal 进行验证时,由于我的字段名称与架构名称“Amount_1”而不是“Amount”不匹配,因此它不会验证该字段。

我怎样才能让它工作?

我不能将所有 3 个折扣合并到唯一客户的一条记录中,因为为了简化示例,我遗漏了一些其他字段。我需要为 3 行中的每个客户提供 3 个折扣。

这是一些代码:

这是我的元数据

关于如何让它发挥作用的任何想法?

0 投票
2 回答
223 浏览

asp.net - xVal 客户端中的前缀导致 ModelBinder 问题

在过去的 24 小时里,我非常迷恋 xVal。我把它引入了我的个人网站,它就像一个冠军——我无法相信它是多么容易开始。我正在使用 ASP.Net MVC、xVal 1.0 和 DataAnnotations 验证器。

现在尝试将相同的代码放入工作应用程序中,我看到了不同的行为。我有足够的逻辑知道我可能有一些不同的东西,但我看不出它是什么。

为了使客户端验证工作,我在我的字段中添加了前缀“消息”,如下所示:

等等。我的控制器然后有这个逻辑:

现在,自动地,ModelBinder 实际上正在填充我的对象。这很棒。

问题是我的工作项目,我正在尝试做同样的事情——客户端验证效果很好,但是 ModelBinder 没有填充我的模型。我知道这是一个前缀问题,因为当我删除前缀时,它很好。

脚本的唯一区别是工作项目使用的是缩小的 jquery 验证库。

关于寻找什么的任何想法?

0 投票
1 回答
268 浏览

xval - 使用 xVal 验证标题和用户名的唯一组合

我有一个创建/编辑文章的表格。每篇文章都与一个用户相关联。

文章发布后,每篇文章的链接由用户名和文章标题组成(并且 {userName}/{articleTitle} 应该是唯一的组合):

文章类:

查看型号:

看法:

我正在使用 xVal 进行验证。

ValidateTitle - 是一个控制器动作,它验证 {userName}/{articleTitle} 是唯一的。它使用 Ajax 工作。

编辑标题时一切正常,但在选择列表中更改用户时出现问题。如果标题对 user1 无效,并且我选择了 user2,则之前的错误消息仍然存在,我无法检查 user2 的标题是否有效。

我可以用与标题相同的方式验证用户名,但有时会显示 2 个错误,说明用户名和标题组合无效。

标题错误和用户错误应该同步,但如何?

或者也许还有另一种我应该使用标题和用户列表的方式?