Asp.net core ASP.NET Core:jquery.validate.js与其他文件一起使用时不起作用<;脚本>;标签
使用Asp.net core ASP.NET Core:jquery.validate.js与其他文件一起使用时不起作用<;脚本>;标签,asp.net-core,asp.net-core-mvc,model-validation,Asp.net Core,Asp.net Core Mvc,Model Validation,使用VS2017,我创建了一个ASP.NET MVC Core 1.1.1应用程序,使用默认的ASP.NET Core Web应用程序模板和个人用户帐户模式。正如我们所知,默认情况下,VS2017在项目内创建和配置所有必要的css和javascripts文件。当我与jquery.validate.js一起使用javascript时,验证在客户端和服务器端都可以正常工作,如下所示: 观察结果 当我在输入框中输入正确的值(类型为float)时,表单将成功提交,并将该值插入SQL db。但是,如果我有
VS2017
,我创建了一个ASP.NET MVC Core 1.1.1应用程序,使用默认的ASP.NET Core Web应用程序
模板和个人用户帐户
模式。正如我们所知,默认情况下,VS2017
在项目内创建和配置所有必要的css
和javascripts
文件。当我与jquery.validate.js一起使用javascript时,验证
在客户端和服务器端都可以正常工作,如下所示:
观察结果
当我在输入框中输入正确的值(类型为float)时,表单将成功提交,并将该值插入SQL db。但是,如果我有意地输入一个字符串,例如abc,则不会发生客户端错误,但在post操作时,正如预期的那样,ModelStat.IsValid
返回false,因此数据不会插入到数据库中
在页面的源代码视图(如下所示)上(或使用F12),我可以看到jquery.validate.js
已正确加载
我尝试在..
之前加载jquery.validate.js
,然后将其移动到..
之后,但是jquery.validate.js
加载成功,但客户端验证仍然不起作用
查看
@model MyProj.Models.MainViewModel
...
<div class="form-group">
<label asp-for="Price"></label>
<div class="col-md-10">
<input asp-for="Price" class="form-control"></input>
<span asp-validation-for="Price" class="text-danger"></span>
</div>
</div>
<div>
<button type="submit" name="submit"...>GO</button>
</div>
@section scripts
{
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
<script>
$(document).ready(function () {
...
...
});
</script>
}
...
<div class="col-sm-2">
<small class="input-group-addon">$</small>
<input class="form-control text-right" type="text" data-val="true" data-val-number="The field Price must be a number." id="Price" name="Price" value="">
<span class="text-danger field-validation-valid" data-valmsg-for="Price" data-valmsg-replace="true"></span>
</div>
...
</div>
...
<script src="/lib/jquery/dist/jquery.js"></script>
<script src="/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="/js/site.js?v=EWaMeWsJBYWmL2g_KkgXZQ5nPe-a3Ichp0LEgzXczKo"></script>
<script src="/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
<script>
$(document).ready(function () {
...
...
});
</script>
@model MyProj.Models.MainViewModel
...
去
@节脚本
{
@{wait Html.RenderPartialAsync(“_validationScript”);}
$(文档).ready(函数(){
...
...
});
}
页面源代码视图
@model MyProj.Models.MainViewModel
...
<div class="form-group">
<label asp-for="Price"></label>
<div class="col-md-10">
<input asp-for="Price" class="form-control"></input>
<span asp-validation-for="Price" class="text-danger"></span>
</div>
</div>
<div>
<button type="submit" name="submit"...>GO</button>
</div>
@section scripts
{
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
<script>
$(document).ready(function () {
...
...
});
</script>
}
...
<div class="col-sm-2">
<small class="input-group-addon">$</small>
<input class="form-control text-right" type="text" data-val="true" data-val-number="The field Price must be a number." id="Price" name="Price" value="">
<span class="text-danger field-validation-valid" data-valmsg-for="Price" data-valmsg-replace="true"></span>
</div>
...
</div>
...
<script src="/lib/jquery/dist/jquery.js"></script>
<script src="/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="/js/site.js?v=EWaMeWsJBYWmL2g_KkgXZQ5nPe-a3Ichp0LEgzXczKo"></script>
<script src="/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
<script>
$(document).ready(function () {
...
...
});
</script>
。。。
$
...
...
$(文档).ready(函数(){
...
...
});
为时已晚,但希望这对您有所帮助
像这样使用不引人注目的:
@section scripts{
<script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
}
@节脚本{
}
@节不应像中那样呈现html@JoeAudette这是帖子的页面源代码视图
部分的一个输入错误-我已经纠正了。谢谢你指出这一点。你在页面上看到脚本错误了吗?在视图模型上是否有用于验证的注释?你应该在问题中显示你的视图模型以及至少部分视图。你是说,如果省略最后一个脚本元素,它会按预期工作吗?如果是这样的话,我可能需要更多地了解这个脚本的功能,因为它似乎破坏了它。是的,代码看起来不错,没有什么会让我觉得是错的。局部视图是可以的,除非它是由ajax加载的,这可能会使它在不引人注目的情况下错过连接。在页面加载时,不引人注目的脚本应该看到数据属性并连接验证,但如果在页面加载后由ajax加载,则可以解释问题。如果在初始页面加载期间呈现局部视图,则该视图应该可以工作