如果asp-for在名称中有点,则jquery unobtrusive停止工作

时间:2016-06-30 18:56:39

标签: jquery asp.net asp.net-mvc

我正在使用带有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
 ...
}

为什么它没有显示验证错误?

2 个答案:

答案 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版本。

我相信它会在下一个版本中修复。