C# 自定义标记帮助程序调试
我正在尝试测试我正在尝试创建的新标记帮助器。我偶然发现了新的.net核心验证的一个缺点,无法在验证后更改类。因此,如果我想给我的错误一个红色背景,跨度总是在那里,不会改变。因此,我决定制作自己的标记助手。问题是我似乎无法让它工作或触发。我甚至不能让它达到一个断点。以下是我到目前为止为标记助手所做的工作C# 自定义标记帮助程序调试,c#,razor,asp.net-core,asp.net-core-mvc,tag-helpers,C#,Razor,Asp.net Core,Asp.net Core Mvc,Tag Helpers,我正在尝试测试我正在尝试创建的新标记帮助器。我偶然发现了新的.net核心验证的一个缺点,无法在验证后更改类。因此,如果我想给我的错误一个红色背景,跨度总是在那里,不会改变。因此,我决定制作自己的标记助手。问题是我似乎无法让它工作或触发。我甚至不能让它达到一个断点。以下是我到目前为止为标记助手所做的工作 namespace MusicianProject.TagHelpers { // You may need to install the Microsoft.AspNetCore.Raz
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;
}
}
}
下面是我的register视图中的用法
<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"); }
}
现在我不确定某些文件的位置是否重要,但我的_ViewImports.cshtml文件位于我的视图文件夹根目录(src/views/_ViewImports.cshtml)中,我的标记帮助程序在根目录中有自己的文件夹(src/TagHelpers/*)
我漏掉了什么?我如何纠正它?如果我理解正确,您的问题是断点没有被击中。问题在于:
[HtmlTargetElement("invalid-class", Attributes = "validation-class")]
HTMLTargetElement的第一个参数是您要定位的标记,因此在您的情况下,它将是“span”。您在那里输入了一个类名
这样,至少你的断点会被击中,我相信你会从中找出其余的问题。如果我理解正确,你的问题是你的断点没有被击中。问题在于:
[HtmlTargetElement("invalid-class", Attributes = "validation-class")]
HTMLTargetElement的第一个参数是您要定位的标记,因此在您的情况下,它将是“span”。您在那里输入了一个类名
这样,至少你的断点会被击中,我相信你会从中找出其余的问题。你有两个问题
1-HtmlTargetElement是可以使用此标记帮助器的标记的名称,例如:span、div、table。。。
2-代码中没有使用标记帮助器,因此,它永远不会被解雇。默认情况下,它不会应用于HtmlTargetElement
中指定的所有标记,您应该通过向span标记添加validate class
属性来调用它
要了解更多关于标记帮助程序的信息,请查看此链接。您有两个问题
1-HtmlTargetElement是可以使用此标记帮助器的标记的名称,例如:span、div、table。。。
2-代码中没有使用标记帮助器,因此,它永远不会被解雇。默认情况下,它不会应用于HtmlTargetElement
中指定的所有标记,您应该通过向span标记添加validate class
属性来调用它
要了解有关标记帮助程序的更多信息,请查看此链接