C# 加入多个taghelpers asp.net核心

C# 加入多个taghelpers asp.net核心,c#,asp.net-core,asp.net-core-tag-helpers,C#,Asp.net Core,Asp.net Core Tag Helpers,我需要减少在我的视图中编写的html代码,因此我想创建一个帮助器标记来完成这项工作,但我无法正确生成代码 我想从社区得到一些帮助 <div class="row"> <div class="col-md-12"> <div class="form-group"> <label asp-for="Name"></label> <input asp-for="Na

我需要减少在我的视图中编写的html代码,因此我想创建一个帮助器标记来完成这项工作,但我无法正确生成代码

我想从社区得到一些帮助

<div class="row">
    <div class="col-md-12">
        <div class="form-group">
            <label asp-for="Name"></label>
            <input asp-for="Name" />
            <span class="help-block">@Html.ValidationMessageFor(model => model.Name)</span>
        </div>
    </div>
</div>

@Html.ValidationMessageFor(model=>model.Name)
上述代码将转换为以下代码:

<input asp-for="Name" class="col-md-12" />

到目前为止,我所拥有的:

[HtmlTargetElement("input", Attributes = "asp-for")]
    public class InputTagHelperExtesions : TagHelper
    {
        public override int Order { get; } = int.MaxValue;

        [HtmlAttributeName("asp-for")]
        public ModelExpression For { get; set; }

        public override void Process(TagHelperContext context, TagHelperOutput output)
        {

            base.Process(context, output);
            if (!output.PreElement.GetContent().Contains("form-group"))
            {
                output.PreElement.AppendHtml("<div class=\"form-group\">");
                output.PostElement.AppendHtml("</div>");
            }
        }
    }
[HtmlTargetElement(“输入”,Attributes=“asp for”)]
公共类InputAgHelperExtensions:TagHelper
{
公共重写int顺序{get;}=int.MaxValue;
[HtmlAttributeName(“asp for”)]
{get;set;}的公共模型表达式
公共覆盖无效进程(TagHelperContext上下文,TagHelperOutput输出)
{
过程(上下文、输出);
如果(!output.PreElement.GetContent()包含(“表单组”))
{
output.PreElement.AppendHtml(“”);
output.PostElement.AppendHtml(“”);
}
}
}

我想我有办法用一个更简单的代码来实现这一点,而且我没有在助手标签中编写纯html,我在microsoft文档中查找了几篇文章,但我没有找到我要查找的内容。

FWIW,我认为在这里使用
input
是一个糟糕的计划。考虑到它已经是一个taghelper,您的代码将导致很多混乱。最好使用
formcontrol
bootstrapinput
等,因此很明显这是不同的。感谢Chris Pratt的回复,是的,可能是
。我已经展示的这个示例已更改为
,但我想利用
中的功能,除了呈现多个标记的初始问题之外,我无法找到在输入中使用
的方法。你有什么建议吗?你不应该把taghelpers当作代码片段来滥用。标记帮助器用于添加可重用的功能,而不是临时性的。标记辅助对象不应包含任何设计或样式,这实际上就是您正在执行的操作。当您从引导更改为角度材质或其他材质时,您需要更改代码,因为它在taghelper中是硬编码的。您可能会更好地使用部分视图。谢谢您的回复。我正在处理的当前项目将有许多屏幕,这些屏幕将反映数据库(POCO),因此我希望有一个像
@Html.EditorForModel()
这样的帮助器,我只希望它位于帮助器标记中,而不是Html帮助器中。我将有5000多个反映数据库的条目,我想在我的POCO类中呈现基于字段的注释。出于这个原因,我想要一些我使用的helper标记,这个helper标记将完成我输入的所有构造。ASP.NET内核中已经有了这方面的东西吗?@Tseng:我完全不同意。这确实是taghelpers的最佳用途:提供一个简单的标记,扩展为完整的HTML组件。我同意风格不应该是一个组成部分,但在这种情况下它并不是真的。它只是具有各种类名的HTML元素。虽然这些类名恰好适合于引导,但您可以应用您想要的任何样式。