c# - El ayudante de etiqueta no se procesa en ASP.NET Core 2
asp.net-core asp.net-core-2.0 (1)
He agregado la siguiente etiqueta de ayuda:
using System;
using System.Linq;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.TagHelpers;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.Razor.TagHelpers;
namespace X.TagHelpers
{
[HtmlTargetElement(Attributes = ValidationForAttributeName + "," + ValidationErrorClassName)]
public class ValidationClassTagHelper : TagHelper
{
private const string ValidationForAttributeName = "k-validation-for";
private const string ValidationErrorClassName = "k-error-class";
[HtmlAttributeName(ValidationForAttributeName)]
public ModelExpression For { get; set; }
[HtmlAttributeName(ValidationErrorClassName)]
public string ValidationErrorClass { get; set; }
[HtmlAttributeNotBound]
[ViewContext]
public ViewContext ViewContext { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
Console.WriteLine("/n/n------------!!!!!!---------/n/n");
ModelStateEntry entry;
ViewContext.ViewData.ModelState.TryGetValue(For.Name, out entry);
if (entry == null || !entry.Errors.Any()) return;
var tagBuilder = new TagBuilder(context.TagName);
tagBuilder.AddCssClass(ValidationErrorClass);
output.MergeAttributes(tagBuilder);
}
}
}
y luego en
_ViewImports.cshtml
agregué la línea:
@addTagHelper *, X.TagHelpers
El archivo está compilado correctamente y si presento un error de sintaxis,
dotnet build
me avisa al respecto.
Luego en una de mis páginas agrego:
<div k-validation-for="OldPassword" k-error-class="has-danger"></div>
Si cargo la página, no veo salida de consola en el lado del servidor y la
k-validation-for
y
k-error-class
se reenvían a la página generada tal cual (en lugar de agregar la clase
has-danger
al atributo de
class
) .
¿Qué estoy haciendo mal?
Al registrar Tag Helpers, se requiere el ensamblaje , no el espacio de nombres, explicado en los docs .
... el segundo parámetro "Microsoft.AspNetCore.Mvc.TagHelpers" especifica el ensamblado que contiene los Tag Helpers. Microsoft.AspNetCore.Mvc.TagHelpers es el ensamblado de los Asistentes de etiqueta de núcleo ASP.NET integrados.
Entonces, en su caso, puede cambiar esto:
@addTagHelper *, X.TagHelpers
A esto:
@addTagHelper *, X