【发布时间】:2019-05-08 01:44:56
【问题描述】:
我有一个带有客户端验证的表单,当输入错误时
检测到,改变输入字段的类属性;改为包含"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 代码的 sn-p。
[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。
【问题讨论】:
标签: c# jquery asp.net-core