Asp.Net Core客户端验证不起作用

gcuhipw9  于 2023-06-25  发布在  .NET
关注(0)|答案(3)|浏览(135)

我试图使用客户端验证,但它不工作。我的模型是:

[Required]
      [DataType(DataType.EmailAddress)]
      public string Email { get; set; }

我的视图使用的布局有:

<script src="~/js/jquery-3.6.0.min.js" type="text/javascript"></script>
    <script src="~/js/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
    <script src="~/js/jquery.validate.js" type="text/javascript"></script>

我的看法是:

<div class="form-group">
        <label asp-for="Email"></label>
        <input asp-for="Email" class="form-control" />
        <span asp-validation-for="Email" class="text-danger"></span>
    </div>

当我在浏览器中查看表单html时,它显示:

<div class="form-group">
        <label for="Email">Email</label>
        <input class="form-control" type="email" data-val="true" data-val-required="The Email field is required." id="Email" name="Email" value="">
        <span class="text-danger field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span>
    </div>

但是当我点击提交按钮时,表单被发送到服务器,这意味着客户端验证不起作用。

lzfw57am

lzfw57am1#

由于某些原因,您不得不在表单标记下面添加asp-validation-summary

<form id="myForm">

<div asp-validation-summary="ModelOnly" class="text-danger"></div>
.....
.....
</form>
epfja78i

epfja78i2#

解决方案是,您应该在不显眼的脚本之前加载jquery.validate脚本。在这里找到答案Uncaught TypeError: Cannot set property 'unobtrusive' of undefined

ykejflvf

ykejflvf3#

你好,首先你的观点使用你的布局?这是一个技巧,因为如果视图不使用布局,就不能使用客户端验证。其次,如果你想使用客户端验证,你不应该使用with layout,因为你所有的视图都不使用邮件入口。您可以使用必要的网页,例如:登录、注册或更新页面。你可以在你的csthml页面的底部添加脚本标签,就是这样。

相关问题