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

Arr*_*rrr 7 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;}
}
Run Code Online (Sandbox Code Playgroud)

并在我的视图页面

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

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

...
<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>
Run Code Online (Sandbox Code Playgroud)

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

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

小智 10

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

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

一旦我将脚本置于生产中,它就开始工作了!


Bar*_*osz 5

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

验证脚本引用位于默认/内置中_ValidationScriptsPartial.cshtml,我只是通过添加添加到我的页面

@section Scripts 
{
     <partial name="_ValidationScriptsPartial"/>    
}
Run Code Online (Sandbox Code Playgroud)

在我查看 cshtml 的末尾。

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

在此处输入图片说明

然而,结果发现路径_ValidationScriptsPartial不正确!如您所见,只有缩小版可用……而在第二个的情况下,dist缺少一个子文件夹。

在此处输入图片说明

这是相当令人惊讶的,因为这是一个我没有接触过的样板代码。