我试图使用客户端验证,但它不工作。我的模型是:
[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>
但是当我点击提交按钮时,表单被发送到服务器,这意味着客户端验证不起作用。
3条答案
按热度按时间lzfw57am1#
由于某些原因,您不得不在表单标记下面添加asp-validation-summary
epfja78i2#
解决方案是,您应该在不显眼的脚本之前加载jquery.validate脚本。在这里找到答案Uncaught TypeError: Cannot set property 'unobtrusive' of undefined
ykejflvf3#
你好,首先你的观点使用你的布局?这是一个技巧,因为如果视图不使用布局,就不能使用客户端验证。其次,如果你想使用客户端验证,你不应该使用with layout,因为你所有的视图都不使用邮件入口。您可以使用必要的网页,例如:登录、注册或更新页面。你可以在你的csthml页面的底部添加脚本标签,就是这样。