Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 客户端验证在ASP.net核心MVC应用程序中不起作用_Asp.net Core - Fatal编程技术网

Asp.net core 客户端验证在ASP.net核心MVC应用程序中不起作用

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

我正在尝试在ASP.NETCore3.0MVC应用程序中启用客户端验证。当我从ajax请求提交表单时,客户端验证不起作用。然而,当我直接发布表单时,它就起作用了。 这是我的模型:

 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>
}