У меня есть форма с проверкой на стороне клиента и при вводе ошибки
обнаружен, атрибут класса изменен в поле ввода; Изменено, чтобы включить "input-validation-error"
класс.
Я хочу изменить этот класс, чтобы не использовать его, а вместо этого использовать класс Bootstraps "is-invalid"
.
Я пытался использовать ASP.NET Core TagHelpers
, но это не дает никакого эффекта;
Я считаю, что это не будет работать, поскольку помощники будут работать только в том случае, если загружена «вся страница», это не поможет при проверке на стороне клиента.
При поиске в проекте .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
.