如何在不提交的情况下触发 ASP .NET Core MVC 客户端验证
How to trigger ASP .NET Core MVC client-side validation without submitting
如何在不提交表单的情况下在 ASP .NET Core MVC 中触发客户端验证?
我正在使用模式,需要触发验证(不提交表单)。
在jQuery,我可以做到这一点
$('#formID').validate().form()
但是,我想触发 ASP .NET Core 中包含的非侵入式验证。
我想我们可以使用这段代码:
public class Movie
{
public int Id { get; set; }
[Required]
[StringLength(100)]
public string Title { get; set; }
[ClassicMovie(1960)]
[DataType(DataType.Date)]
[Display(Name = "Release Date")]
public DateTime ReleaseDate { get; set; }
[Required]
[StringLength(1000)]
public string Description { get; set; }
[Range(0, 999.99)]
public decimal Price { get; set; }
public Genre Genre { get; set; }
public bool Preorder { get; set; }
}
请检查this article
ASP.NET Core 仍然存在不显眼的验证,您只需包含相关脚本即可。这是一个完整的例子。
假设这个模型:
public class SomeViewModel
{
[Required]
public string Name { get; set; }
}
而这个控制器动作:
public IActionResult Index()
{
return View(new SomeViewModel());
}
最后,观点:
@model SomeViewModel
@{
ViewData["Title"] = "Home Page";
}
<form asp-action="Index" id="formID" method="post">
<input asp-for="Name" />
<span asp-validation-for="Name"></span>
<input type="submit" />
</form>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
<script type="text/javascript">
$(function () {
// Silly example to demonstrate.
$('#formID').validate().form();
if ($('#formID').valid() === false) {
console.log("invalid");
} else {
console.log("valid!");
}
});
</script>
}
如果你看一下 ~/Views/Shared/_ValidationScriptsPartial.cshtml
,你会发现它包含:
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
如果您查看开发人员工具控制台,它应该会在加载页面时立即验证表单,并在 Name
文本框旁边显示必填字段缺少验证消息。
如何在不提交表单的情况下在 ASP .NET Core MVC 中触发客户端验证?
我正在使用模式,需要触发验证(不提交表单)。
在jQuery,我可以做到这一点
$('#formID').validate().form()
但是,我想触发 ASP .NET Core 中包含的非侵入式验证。
我想我们可以使用这段代码:
public class Movie
{
public int Id { get; set; }
[Required]
[StringLength(100)]
public string Title { get; set; }
[ClassicMovie(1960)]
[DataType(DataType.Date)]
[Display(Name = "Release Date")]
public DateTime ReleaseDate { get; set; }
[Required]
[StringLength(1000)]
public string Description { get; set; }
[Range(0, 999.99)]
public decimal Price { get; set; }
public Genre Genre { get; set; }
public bool Preorder { get; set; }
}
请检查this article
ASP.NET Core 仍然存在不显眼的验证,您只需包含相关脚本即可。这是一个完整的例子。
假设这个模型:
public class SomeViewModel
{
[Required]
public string Name { get; set; }
}
而这个控制器动作:
public IActionResult Index()
{
return View(new SomeViewModel());
}
最后,观点:
@model SomeViewModel
@{
ViewData["Title"] = "Home Page";
}
<form asp-action="Index" id="formID" method="post">
<input asp-for="Name" />
<span asp-validation-for="Name"></span>
<input type="submit" />
</form>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
<script type="text/javascript">
$(function () {
// Silly example to demonstrate.
$('#formID').validate().form();
if ($('#formID').valid() === false) {
console.log("invalid");
} else {
console.log("valid!");
}
});
</script>
}
如果你看一下 ~/Views/Shared/_ValidationScriptsPartial.cshtml
,你会发现它包含:
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
如果您查看开发人员工具控制台,它应该会在加载页面时立即验证表单,并在 Name
文本框旁边显示必填字段缺少验证消息。