Các ASP.NET Lõi TagHelper documentation đưa ra ví dụ sau đây:TagHelpers làm tổ trong ASP.NET MVC Lõi 6
public class WebsiteContext
{
public Version Version { get; set; }
public int CopyrightYear { get; set; }
public bool Approved { get; set; }
public int TagsToShow { get; set; }
}
[TargetElement("website-information")]
public class WebsiteInformationTagHelper : TagHelper
{
public WebsiteContext Info { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "section";
output.Content.SetContent(
[email protected]"<ul><li><strong>Version:</strong> {Info.Version}</li>
<li><strong>Copyright Year:</strong> {Info.CopyrightYear}</li>
<li><strong>Approved:</strong> {Info.Approved}</li>
<li><strong>Number of tags to show:</strong> {Info.TagsToShow}</li></ul>");
output.TagMode = TagMode.StartTagAndEndTag;
}
}
này sau đó có thể được sử dụng trong Razor bạn .cshtml như sau:
<website-information info="new WebsiteContext {
Version = new Version(1, 3),
CopyrightYear = 1790,
Approved = true,
TagsToShow = 131 }"/>
Điều này sẽ tạo ra HTML sau:
<section>
<ul>
<li><strong>Version:</strong> 1.3</li>
<li><strong>Copyright Year:</strong> 1790</li>
<li><strong>Approved:</strong> true</li>
<li><strong>Number of tags to show:</strong> 131 </li>
</ul>
</section>
Đây là cú pháp trợ giúp thẻ khá xấu xí. Có cách nào để tổ chức một trình trợ giúp thẻ khác và có đầy đủ cảm giác intelli để chỉ cho phép con của trang web-thông tin có thể là bối cảnh? Xem ví dụ dưới đây:
<website-information>
<context version="1.3" copyright="1790" approved tags-to-show="131"/>
</website-information>
Trong trường hợp sử dụng của tôi, yếu tố trang web-thông tin đã có nhiều thuộc tính và tôi muốn thêm một hoặc nhiều yếu tố lồng riêng biệt.
CẬP NHẬT
Tôi đã lớn lên this gợi ý trên trang ASP.NET GitHub để thực hiện tính năng này cho TagHelpers.
Tại sao không chỉ thêm các tham số riêng biệt vào trình trợ giúp thẻ 'website-information' thay vì tham số' info' duy nhất? Bạn có thể lồng thẻ trợ giúp, nhưng bạn sẽ không thể ép buộc chỉ những người trợ giúp '' được lồng vào bên trong '' helper –
@ DanielJ.G. Có vô số lý do để làm điều này. 1. Bạn đã có rất nhiều thuộc tính trên '' 'website-information''' 2. Nếu bối cảnh có ý nghĩa logic hơn là một phần tử con 3. Nếu các thuộc tính' '' context''' được nhóm lại một cách hợp lý 4. Bạn có thể có nhiều phần tử '' 'context'''. –