我正在使用带有mvc 6和jquery-validation-unobtrusive js库的asp.net核心。事情是不显眼的js图书馆在我提交表格时没有检查我的输入。
非常简单,这里有一个基本的例子:
工作的:
@model MyModel
...
<input asp-for="MyField" placeholder="...">
<span asp-validation-for="MyField"></span>
MyModel仅包含我的模型属性。
exmple:
public class MyModel
{
public string MyField
public string MyField2
...
}
不工作:
@model VM
...
<input asp-for="MyModel.MyField" placeholder="...">
<span asp-validation-for="MyModel.MyField"></span>
VM包含MyModel类以及其他属性。
exmple:
public class VM
{
public MyModel MyModel
public CustomClass OtherClass
...
}
为什么它没有显示验证错误?
答案 0 :(得分:0)
您需要将字段名称放在qoutes中。当您拥有类似user [name]的名称属性时,请确保将名称放在引号
中
$("#myform").validate({
rules: {
// no quoting necessary
name: "required",
// quoting necessary!
"user[email]": "email",
// dots need quoting, too!
"user.address.street": "required"
}
});
请查看此信息以获取更多信息Validate input fields with a dot in name
希望这有助于:)
答案 1 :(得分:0)
我在这里找到了一个解决方案: https://github.com/aspnet/jquery-validation-unobtrusive/issues/39#issuecomment-237945087
@ rok7
在尝试提供调查申请时,我发现了 问题:当创建一个新的ASP.Net Core应用程序时 工作正常。但是,如果在VisualStudio中,文件bower.json是手动的 修改(因为jquery-validation-unobtrusive未列出 '浏览'功能,例如选择不同的功能是必要的 版本),然后VisualStudio恢复jquery-validation-unobtrusive 与原始文件有以下区别:原始文件:
function escapeAttributeValue(value) { // As mentioned on http://api.jquery.com/category/selectors/ return value.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g, "\\$1"); } VisualStudio-restored function escapeAttributeValue(value) { // As mentioned on http://api.jquery.com/category/selectors/ return value.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g, "\\\\$1"); } These magically inserted ‘\’ caused my problems!!!
@ryanbrandenburg
那些\是尝试修复不同问题的结果,但是 经过仔细检查,这个问题是由其他事情和我们引起的 可以恢复这种变化。这发生在#44。
这种情况的解决方法很简单,就是手动修复上述行或降级为3.2.5版本。
我相信它会在下一个版本中修复。