问题标签 [remote-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.
asp.net-mvc-3 - 强制重新验证 mvc3 不显眼的远程验证
这是一个经典的登录流程。用户可以在“新用户”或“现有用户”之间进行选择。如果用户是新用户,则登录框中的名称应针对服务器进行验证,以查看用户名是否唯一,如果是现有用户,则将跳过此检查,因为我们希望用户名已经被使用(当然)。
我在视图模型上添加了一个 [Remote] 属性,并将新/退出用户的单选按钮添加为“附加字段”。这样,如果它是现有用户,远程验证将只返回 true,如果不是,则检查数据库,以查看是否使用了用户名。
这很好用,除非用户在输入用户名后决定更改单选按钮(新的/现有的)(并且远程验证已经运行)。由于远程验证仅在用户名更改时自动运行(即具有 [Remote] 属性的属性),因此仅更改单选按钮将不会再次运行。
所以我的问题是,我怎样才能强制远程验证再次运行?我通过在用户名输入字段上触发更改/焦点/模糊事件来尝试通常的黑客攻击,但未触发调用。我考虑在单选按钮上添加一个类似的 [Remote],但这会使两个看起来相同的错误消息变得复杂,放置在相同的绝对位置。
有没有办法触发重新验证?
asp.net-mvc - 来自引用程序集的实体的 MVC3 远程验证?
如果我在单独的程序集中定义了一个实体类(例如来自 Entity Framework),是否可以向属性添加远程验证?
如果该类是在我的 MVC 项目中定义的,我只需向该属性添加一个 Remote 属性,但是当该类在单独的程序集中定义时,我不能这样做。我确实在我的 EF 项目中定义了其他数据注释,但是在那里添加远程注释没有任何意义。
我可能可以手动将 jquery 验证规则添加到我的视图中,但我想知道是否有办法让 MVC 框架为我做这件事。
我在网上找到的每个示例都假定您使用的是在 MVC 项目中定义的实体,可以轻松添加远程验证。在我的视图中使用我的 EF 实体作为我的模型类是错误的吗?制作具有所有相同属性的新实体,以及与我的 EF 类相同的数据注释,并且必须在两者之间来回转换,这似乎是一种浪费。
asp.net-mvc - 当参数名称需要不同时,如何重用远程验证方法?
我有两个类用作两个不同视图的模型。您可以看到第二个类包含第一个类的实例。第一个包含远程验证属性。
当这些验证在浏览器中触发时,会根据视图使用的类发出两个不同的请求。可以看到查询字符串参数名称不同:
这是我的操作方法的当前版本,它不适用于第二个 URL:
当使用第二个 URL 时,name 参数将为空。我读过我应该能够向该参数添加一个 Bind 属性并添加一个前缀,但这也不起作用。我什至尝试将前缀设置为EmailRecipient.
以防万一它需要点。为了以防万一,我还尝试在名称中使用大写 N。不去。添加它也会破坏其他 URL!
可能的解决方案
我可以让该方法获取一个 EmailRecipientViewModel 的实例并为其创建一个 IModelBinder,我可以在其中查找任一命名约定并将其分配给该实例。这似乎比应该做的工作更多。
我可以使用重载@Html.EditorFor()
并告诉它为 htmlFieldName 使用“名称”,也可以使用@Html.ValidationMessage( "Name" )
而不是ValidationMessageFor
. 唯一的缺点是潜在的命名冲突,但这并不是什么大不了的事。我只需要为正在使用的这个类的所有实例使用一个唯一的名称。更新:实际上,如果我这样做,因为我更改了名称,所以在我发布表格时会破坏事情。那不好。
...
我刚刚发现我可以让该方法不带参数,并手动访问查询字符串。这是一个非常简单的解决方案,但我没有得到 nice 参数。
这很容易,我可能只会使用它。但是,既然我已经输入了这个问题,我会问,有没有更优雅的解决方案?
asp.net-mvc - 远程验证似乎有问题
想象一下这种情况:
设置
在默认的 MVC3 项目中,在AccountModels.cs
在RegisterModel
更改UserName
为:
控制器中的UserNameExists
方法Validation
如下:
现在在注册视图中,使用GlobalAccount
模型而不是RegisterModel
用户名输入框将如下所示:
和
这将在 HTML 中产生类似的结果
调试
如果您使用 FireBug 检查发生了什么......远程验证将属性名称而不是属性id发送到验证方法(那个UserNameExists
),如下所示:
Register.UserName
代替Register_UserName
所以我无法获取这个值......永远:(
这真的是一个错误还是有人已经发现而我无法通过谷歌搜索得到它?
这是实际问题的简单图像:
c# - asp.net mvc 3中的远程验证问题
我有一个人物模型
这是我的 UserNameExists 方法
当我启用 Javascript 时,它工作得很好,但是当我禁用 javascript 时,这个规则不会被强制执行......
为什么是这样?
请帮忙。
编辑预期行为:
根据msdn,即使没有 Javacript,它也应该遵守这条规则
- 或者,在您的浏览器中禁用客户端脚本,再次运行该页面,然后输入违反验证约束的数据。
当您离开包含无效数据的字段时,您不会看到验证错误,因为脚本被禁用。因为 ASP.NET MVC 使用不显眼的 JavaScript,所以您看不到客户端脚本错误。但是,在您提交表单时会执行服务器端验证。(最好使用禁用了脚本的浏览器测试您的 Web 应用程序。)
asp.net-mvc-3 - MVC 3对象的远程验证不起作用
我意识到这个问题已经被问过很多次了。但是,没有一个解决方案对我有用。
问题:
我有一个对象:
还有一个模型:
和我的行动:
当验证开始时,因为它是一个复杂的对象,它会发送一个如下所示的 URL:
显然这意味着我的操作不会选择日期,因为参数名称与查询字符串名称不匹配。
我进行了广泛的搜索,看到了很多建议——所有这些我都尝试过,但都没有奏效。以下是我尝试过的:
使用绑定属性
和
日期只是返回为空
使用模型或对象作为参数类型
和
MyDate
总是以 MinValue 结尾,但参数(SomeModel 或 SomeObject)不为空
我不太确定我做错了什么。谁能指出我正确的方向?跑步前有没有我必须念诵的咒语,或者外面必须是晴天?对于一个常见的场景,这似乎比预期的要多得多。
validation - 显示远程验证成功响应的自定义消息
我在注册我的 asp.net mvc 3 应用程序(C#)时使用远程验证来检查用户名的可用性。
我将 MVC 远程属性验证用作:
我需要在两个条件下显示消息:
- 显示错误消息“用户名不可用” - 失败条件
- 显示成功消息“用户名可用” - 成功条件
我能够显示失败条件的消息,而不会出现任何问题,例如:
但是对于成功条件,我需要发送 true 作为响应(而不是自定义消息):
如何显示远程验证成功条件的自定义消息?
asp.net-mvc-3 - MVC3 远程属性,如何实现?
我在解决方案下有一个解决方案,其中有几个项目称为 DomainModel,我在其中编写我的模型和其他东西,主要是基础设施。
现在我有另一个名为 WebUI 的项目,我在其中做我的 UI(视图、控制器等...)
我想在必须在 WebUI 特定视图中实现的 DomainModel 项目中使用 Remote 属性。
当我在 DomainModel 中使用它时,它给了我一个错误,它无法识别控制器并且它是正确的它无法识别它,因为如果我添加 WebUI 的引用,Vs 开始对我发誓,因为它将是一个循环引用.
如何实施?
这是我为 RemoteValidation 服务的代码控制器
//DomainModel项目中的真实实体
这是我在 WebUI.Models 中使用远程属性扩展它后的实体
这是我的看法
asp.net-mvc-3 - 如何在asp.net mvc3中使用数据注释进行远程验证时显示ajax加载器图像
在我的 asp.net mvc3 应用程序中,如果用户已经存在,我正在使用数据注释进行远程验证。它运行良好。我想知道是否有什么原因我可以在远程验证(ajax 请求)发生时在表单中的输入字段旁边显示 ajax 加载器图像。
请帮我
谢谢
jquery - MVC3 非鲁棒远程验证的加载指示器
我正在执行 MVC3 不可靠的远程验证以检查用户名的可用性。
它工作正常,但加载验证消息需要相当长的时间!有没有办法在过渡期间显示微调器/用户名可用的检查消息?