[英]Custom Tag helper debugging
我正在尝试测试我要创建的新标签助手。 我偶然发现了新的.net核心验证的缺点,无法更改类后验证。 因此,如果我想为错误提供红色背景,则跨度始终存在并且不会改变。 因此,我决定制作自己的标签助手。 问题是我似乎无法使其正常工作或触发。 我什至无法达到断点。 到目前为止,这是我需要的标签助手。
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;
}
}
}
这是我的注册视图中的用法。
<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文件中注册了项目程序集名称。
@using MusicianProject
@using MusicianProject.Models
@addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers"
@addTagHelper "*, MusicianProject"
现在,我不确定某些文件的放置是否重要,但是_ViewImports.cshtml文件位于我的views文件夹的根目录(src / Views / _ViewImports.cshtml)中,而我的标记助手在其根目录(src / TagHelpers / *)。
我错过了什么,我该如何纠正?
如果我正确理解,您的问题是断点没有命中。 这个问题就在这里:
[HtmlTargetElement("invalid-class", Attributes = "validation-class")]
HTMLTargetElement的第一个参数是您要定位的标签,因此在您的情况下为“ span”。 您在此处输入了班级名称。
这样,至少您的断点将受到打击,我确信您会找出其余的点。
你有2期
1- HtmlTargetElement
是可以在其中使用此标记助手的标记的名称,例如:span,div,table ... 2-您没有在代码中使用标记助手,因此,它将永远不会被触发。 默认情况下,它不会应用于HtmlTargetElement
指定的所有标记,您应该通过将validate-class
属性添加到span标记来调用它。
要了解有关标签助手的更多信息,请检查此链接https://blogs.msdn.microsoft.com/msgulfcommunity/2015/06/17/developing-custom-tag-helpers-in-asp-net-5/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.