gpt4 book ai didi

asp.net - 如何在 ASP.NET Core 自定义标签助手中使用 View ?

转载 作者:行者123 更新时间:2023-12-03 15:47:20 25 4
gpt4 key购买 nike

我一直在关注这篇关于编写自定义标签助手的 Microsoft 文章 here .

在我看到元素标记在 C# 中硬编码的代码的每个地方

示例(取自上述链接)

public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "section";
output.Content.SetHtmlContent(
$@"<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;
}

有没有办法从 cshtml 文件加载标记模板,而不是这样做? (类似于加载部分 View )

我的意图是有个人 cshtml文件(每个元素类型一个),以便我可以轻松地设置它们的样式。我的 C# 看起来也很干净!

谢谢,

詹姆士

最佳答案

您可以创建一个局部 View ,并从您的 TagHelper 中调用它。类(class)。例如:

<!-- Views/Shared/TagHelpers/MyList.cshtml -->
@model YourInfoClass
<ul>
<li><strong>Version:</strong> @Model.Version</li>
<li><strong>Copyright Year:</strong> @Model.CopyrightYear</li>
<li><strong>Approved:</strong> @Model.Approved</li>
<li><strong>Number of tags to show:</strong> @Model.TagsToShow</li>
</ul>

在您的 TagHelper :
[HtmlTargetElement("mylist")]
public class MyListTagHelper : TagHelper
{
private HtmlHelper _htmlHelper;
private HtmlEncoder _htmlEncoder;

public MyListTagHelper(IHtmlHelper htmlHelper, HtmlEncoder htmlEncoder)
{
_htmlHelper = htmlHelper as HtmlHelper;
_htmlEncoder = htmlEncoder;
}

public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "section";
output.TagMode = TagMode.StartTagAndEndTag;

var partial = await _htmlHelper.PartialAsync("TagHelpers/MyList", Info);
var writer = new StringWriter();
partial.WriteTo(writer, _htmlEncoder);

output.Content.SetHtmlContent(writer.ToString());
}
}

关于asp.net - 如何在 ASP.NET Core 自定义标签助手中使用 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42168380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com