我有一个带有客户端验证的表单,当输入错误时
检测到时,将更改输入字段的类属性;将其更改为包括
"input-validation-error"
上课。
我想更改这个类,以便不使用它,而是使用Bootstraps类
"is-invalid"
.
我试过使用ASP.NET核心
TagHelpers
,但这没有效果;
我相信这不会起作用,因为helpers只会在加载“整页”时起作用,它无助于客户端验证。
当我在.NET项目中搜索时,会发现在中定义的css类,
这个
"Unobtrusive validation support library for jQuery"
.
换这个班的最好办法是什么?
CSS可以通过将一个类从一个类更改为另一个类来提供帮助吗?
(重写原始类,不确定是否可能)
或者应该使用JavaScript重新配置
JQuery
?
这是我的TagHelper,添加帮助程序:
validation-for,validation-error-class,validation-valid-class
表单/Html。。。
<input type="email" asp-for="Email" id="inputEmail" class="form-control" placeholder="Email address" required
validation-for="Email" validation-error-class="is-invalid" validation-valid-class="is-valid"/>
<span class="small" asp-validation-for="Email"></span>
这是我的TagHelper的一段代码。
[HtmlTargetElement("input", Attributes = "validation-for,validation-error-class,validation-valid-class")]
public class ValidationErrorClassTagHelper : TagHelper
{
[HtmlAttributeName("validation-for")]
public ModelExpression For { get; set; }
[HtmlAttributeName("validation-error-class")]
public string ErrorClass { get; set; }
[HtmlAttributeName("validation-valid-class")]
public string ValidClass { get; set; }
[HtmlAttributeNotBound]
[ViewContext]
public ViewContext ViewContext { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.RemoveClass(ErrorClass,HtmlEncoder.Default);
output.RemoveClass(ValidClass,HtmlEncoder.Default);
if (ViewContext.ViewData.ModelState.IsValid) {
output.AddClass(ValidClass,HtmlEncoder.Default);
} else
{
output.AddClass(ErrorClass,HtmlEncoder.Default);
}
}
}
新方法不能100%起作用。
我尝试了另一种方法,通过修改
jQuery
defaultOptions
,更改errorClass和validClass。
在此处找到的代码片段[
https://github.com/brecons/jquery-validation-unobtrusive-bootstrap][gitHub]
function ($) {
if($.validator && $.validator.unobtrusive){
var defaultOptions = {
validClass: 'is-valid',
errorClass: 'is-invalid',
这对errorClass有效,但对我来说validClass保持不变,
它仍有待命名
valid
.