Asp.net core 客户端验证在ASP.net核心MVC应用程序中不起作用
我正在尝试在ASP.NETCore3.0MVC应用程序中启用客户端验证。当我从ajax请求提交表单时,客户端验证不起作用。然而,当我直接发布表单时,它就起作用了。 这是我的模型:Asp.net core 客户端验证在ASP.net核心MVC应用程序中不起作用,asp.net-core,Asp.net Core,我正在尝试在ASP.NETCore3.0MVC应用程序中启用客户端验证。当我从ajax请求提交表单时,客户端验证不起作用。然而,当我直接发布表单时,它就起作用了。 这是我的模型: public class RegisterViewModel { [Required(ErrorMessage = "Please enter first name")] [Display(Name = "First Name")] public string F
public class RegisterViewModel
{
[Required(ErrorMessage = "Please enter first name")]
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Required(ErrorMessage = "Please enter last name")]
[Display(Name = "Last Name")]
public string LastName { get; set; }
}
jquery库的顺序:
<environment include="Development">
<link href="~/lib/bootstrap/dist/css/bootstrap.css" rel="stylesheet" />
<script src="~/lib/jquery/jquery.js"></script>
<script src="~/lib/jquery-validate/jquery.validate.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
</environment>
但是没有运气:(
请指导我如何在Ajax调用上启用客户端验证。这是一个工作演示,您可以使用
form.valid()
如下所示:
<form id="frm" asp-action="AjaxTest" method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="FirstName" class="control-label"></label>
<input asp-for="FirstName" class="form-control" />
<span asp-validation-for="FirstName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="LastName" class="control-label"></label>
<input asp-for="LastName" class="form-control" />
<span asp-validation-for="LastName" class="text-danger"></span>
</div>
<div class="form-group">
<input type="button" class="btn btn-primary" value="AjaxTest" onclick="createAccountRequest()" />
<input type="submit" class="btn btn-primary" value="Register" />
</div>
</form>
@section Scripts
{
<script>
function createAccountRequest()
{
event.preventDefault();
var data = $('#frm').serialize();
var $form = $('#frm');
if ($form.valid()) {
$.ajax({
type: "post",
url: "/Home/AjaxTest",
data:data,
success: function () {
alert("success!");
}
});
}
else {
alert("fail");
}
}
</script>
}
@节脚本
{
函数createAccountRequest()
{
event.preventDefault();
变量数据=$('#frm')。序列化();
变量$form=$(“#frm”);
如果($form.valid()){
$.ajax({
类型:“post”,
url:“/Home/AjaxTest”,
数据:数据,
成功:函数(){
警惕(“成功!”);
}
});
}
否则{
警报(“失败”);
}
}
}
结果:
services.AddMvc().AddViewOptions(options =>
{
options.HtmlHelperOptions.ClientValidationEnabled = true;
});
<form id="frm" asp-action="AjaxTest" method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="FirstName" class="control-label"></label>
<input asp-for="FirstName" class="form-control" />
<span asp-validation-for="FirstName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="LastName" class="control-label"></label>
<input asp-for="LastName" class="form-control" />
<span asp-validation-for="LastName" class="text-danger"></span>
</div>
<div class="form-group">
<input type="button" class="btn btn-primary" value="AjaxTest" onclick="createAccountRequest()" />
<input type="submit" class="btn btn-primary" value="Register" />
</div>
</form>
@section Scripts
{
<script>
function createAccountRequest()
{
event.preventDefault();
var data = $('#frm').serialize();
var $form = $('#frm');
if ($form.valid()) {
$.ajax({
type: "post",
url: "/Home/AjaxTest",
data:data,
success: function () {
alert("success!");
}
});
}
else {
alert("fail");
}
}
</script>
}