ASP.Net核心:不显眼的验证不起作用

时间:2017-01-05 23:06:57

标签: asp.net asp.net-mvc asp.net-core-mvc asp.net-core-1.0

ASP.Net Core中的客户端验证(与ASP.Net MVC 5不同)无效。我有以下代码:

public class CountryModel{
    [Required]
    public String Title {get; set;}
}

并在我的视图页面

using(Html.BeginForm()){
   @Html.LabelFor(x=> x.Title)
   @Html.ValidationMessageFor(x=> x.Title)
   @Html.EditorFor(x=> x.Title)
   <Button>Add</Button>
}

将以下脚本添加到页面末尾:

...
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>  
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>

但它失败了。我通过在浏览器中查看源代码来检查脚本,并且脚本已正确加载。我已经指出我的Action API的断点要仔细检查,每次按下添加按钮我都会到达断点,这意味着客户端验证失败。

ASP.Net Core中是否还有其他配置?因为这种方法在MVC 5中运行得很好。

3 个答案:

答案 0 :(得分:8)

请确保您的验证相关脚本位于您正在使用的环境下。开发或生产。

我挣扎了一段时间,当我查看我的脚本时,它被放置在开发部分,我的应用程序正在使用生产环境运行。

我将脚本置于生产状态后就开始工作了!

答案 1 :(得分:0)

就我而言,问题完全不同。

验证脚本参考位于默认值/内置于_ValidationScriptsPartial.cshtml 中,我刚刚通过添加

将其添加到页面中
@section Scripts 
{
     <partial name="_ValidationScriptsPartial"/>    
}

位于View cshtml的末尾。

我可以看到在开发人员工具中已正确引用,所以我认为一切都很好:

enter image description here

但是,事实证明 _ValidationScriptsPartial中的路径不正确! 如您所见,只有缩小版本可用...而在第二个版本中,缺少dist子文件夹。

enter image description here

这真是令人惊讶,因为这是我没碰过的样板代码。

答案 2 :(得分:0)

如果不打扰的客户端验证不起作用,请确保检查以下内容。

  1. 确保未禁用浏览器对JavaScript的支持
  2. 确保已加载以下客户端验证库 按照指定的顺序

    1. jquery.js
    2. jquery.validate.js
    3. jquery.validate.unobtrusive.js
  3. 确保为环境加载了这些验证库 您正在测试。开发,暂存,生产等