我想使用TagHelpers和ASP.NET MVC CORE服务器生成的客户端验证(通过Jquery验证和不引人注意的验证),但遗憾的是我无法使用生成的默认span元素。例如:
<form asp-action="Index" asp-controller="Test" class="validate-form">
<div class="row">
<div class="input-field col s6">
<input asp-for="Id" class="validate" />
<span asp-validation-for="Id"></span>
</div>
</div>
<button type="submit">CREATE</button>
</form>
将生成:
<form class="validate-form" action="/Opportunity/1" method="post"
novalidate="novalidate">
<div class="row">
<div class="input-field col s6">
<input class="validate valid" type="number" data-val="true" data-val-required="The Id field is required." id="Id" name="Id" value="1" aria-describedby="Id-error" aria-invalid="false">
<span class="field-validation-valid" data-valmsg-for="Id" data-valmsg-replace="true"></span>
</div>
</div>
<button type="submit">CREATE</button>
<input name="__RequestVerificationToken" type="hidden" value="...">
</form>
但我不想要跨度,我想使用需要此标记的Materialize设计组件:
<div class="input-field col s12">
<input id="Id" type="text" class="validate">
<label for="Id" data-error="error message">Email</label>
</div>
我需要的是将ASP.NET MVC CORE客户端验证消息重定向到此标签及其数据错误属性。我为此做了一个配置:
$.validator.setDefaults({
errorClass: 'invalid',
validClass: "valid",
errorPlacement: function (error, element) {
$(element)
.parent('.input-field')
.find("label[for='" + element.attr("id") + "']")
.attr('data-error', error.text());
}
});
但不幸的是,由于ASP.NET添加了所有不引人注目的javascript,它似乎被忽略了。有没有人知道更好的解决方案或修复我的解决方案?任何答案都会受到欢迎!是的,我尝试制作自定义TagHelper,无法找到解决问题的方法。