Ich versuche, einen neuen Tag-Helfer zu testen, den ich versuche zu erstellen. Ich bin auf einen Mangel der neuen .net-Kernvalidierung gestoßen und kann die Klassennachprüfung nicht ändern. Also, wenn ich meinen Fehlern einen roten Hintergrund geben wollte, ist die Spanne immer da und wird sich nicht ändern. Also habe ich beschlossen, meinen eigenen Tag-Helfer zu machen. Das Problem ist, dass ich es nicht zum Funktionieren bringen oder auslösen kann. Ich kann nicht einmal einen Bruchpunkt erreichen. Hier ist, was ich bisher für einen Tag-Helfer habe.Benutzerdefinierte Tag-Helper-Debugging
namespace MusicianProject.TagHelpers
{
// You may need to install the Microsoft.AspNetCore.Razor.Runtime package into your project
[HtmlTargetElement("invalid-class", Attributes = "validation-class")]
public class ValidateClassTagHelper : TagHelper
{
public ValidateClassTagHelper(IHtmlGenerator generator)
{
}
public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
return base.ProcessAsync(context, output);
}
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.Attributes.Add("class", "test");
var attr = context.AllAttributes;
}
}
}
und hier ist die Verwendung in meiner Registeransicht.
<div class="container">
<form asp-controller="Account" asp-action="Register" method="post">
<div class="col-md-4 col-md-offset-4">
<div class="form-group">
<label asp-for="FirstName"></label>
<input class="form-control" type="text" asp-for="FirstName" />
<span asp-validation-for="FirstName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="LastName"></label>
<input class="form-control" asp-for="LastName" />
<span asp-validation-for="LastName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Email"></label>
<input class="form-control" type="text" asp-for="Email" />
<span validation-class="alert alert-danger" invalid-class="test" asp-validation-for="Email" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Password"></label>
<input asp-for="Password" type="password" id="password" class="form-control" />
<span asp-validation-for="Password" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="ConfirmPassword"></label>
<input asp-for="ConfirmPassword" type="password" id="confirm-password" class="form-control" />
<span asp-validation-for="ConfirmPassword" class="text-danger"></span>
</div>
<div class="btn-group text-center">
<button class="btn btn-default">Sign up!</button>
<button class="btn btn-danger">Cancel</button>
</div>
</div>
</form>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
}
Und ja, ich habe in meiner Datei _ViewImports.cshtml den Namen der Projekte Assembly registrieren.
@using MusicianProject
@using MusicianProject.Models
@addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers"
@addTagHelper "*, MusicianProject"
Jetzt bin ich nicht sicher, ob die Platzierung bestimmter Dateien Angelegenheiten, aber meine _ViewImports.cshtml Datei in meinen Ansichten Ordner root (src/Ansichten/_ViewImports.cshtml), und mein Tag Helfer haben ihre eigenen befindet sich Ordner im Stammverzeichnis (src/TagHelpers/*).
Was habe ich vermisst und wie kann ich es korrigieren?