ASP.NET-Core嵌套的ASP TagHelper

totesz09

我在ASP Core应用程序开发中有点新手。我在一个页面上有很多输入。

<div class="form-group">
   <label asp-for="Animal.Name"></label>
   <input asp-for="Animal.Name" class="form-control" />
   <span asp-validation-for="Animal.Name" class="text-danger"></span>
</div>

<div class="form-group">
   <label asp-for="Animal.Age"></label>
   <input asp-for="Animal.Age" class="form-control" />
   <span asp-validation-for="Animal.Age" class="text-danger"></span>
</div>

等等。我想用TagHelpers达到这样的目标:

<input-helper value="Animal.Name" />
<input-helper value="Animal.Age" />

产生相同的结果如上。我能以某种方式做到这一点吗?

张白兰

根据你的描述,我建议你可以使用IHtmlGenerator生成label asp-forinput asp-forasp-validation-fortaghelper的代码。

更多详细信息,您可以参考以下代码:

标签助手:

using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.Razor.TagHelpers;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

namespace SecurityRelatedIssue
{
    [HtmlTargetElement("input-helper")]
    public class inputhelper : TagHelper
    {
        [HtmlAttributeName("asp-for")]
        public ModelExpression For { get; set; }

        private readonly IHtmlGenerator _generator;

        [ViewContext]
        public ViewContext ViewContext { get; set; }

        public inputhelper(IHtmlGenerator generator)
        {
            _generator = generator;
        }

        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            using (var writer = new StringWriter())
            {
                writer.Write(@"<div class=""form-group"">");

                var label = _generator.GenerateLabel(
                                ViewContext,
                                For.ModelExplorer,
                                For.Name, null,
                                new { @class = "control-label" });

                label.WriteTo(writer, NullHtmlEncoder.Default);

                var textArea = _generator.GenerateTextBox(ViewContext,
                                    For.ModelExplorer,
                                    For.Name,
                                    For.Model,
                                    null,
                                    new { @class = "form-control" });

                textArea.WriteTo(writer, NullHtmlEncoder.Default);

                var validationMsg = _generator.GenerateValidationMessage(
                                        ViewContext,
                                        For.ModelExplorer,
                                        For.Name,
                                        null,
                                        ViewContext.ValidationMessageElement,
                                        new { @class = "text-danger" });

                validationMsg.WriteTo(writer, NullHtmlEncoder.Default);

                writer.Write(@"</div>");

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

            }

        }
    }
}

在中注册标签助手 _ViewImports.cshtml

@addTagHelper *,{yourapplicationnamespace}

用法:

<input-helper asp-for="@Model.str" ></input-helper>

结果:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.NET嵌套ListView数据绑定

来自分类Dev

ASP.NET WebAPI 2嵌套JSON

来自分类Dev

在ASP.NET Core(以前的ASP.NET 5)中嵌套路由的便捷方法是什么?

来自分类Dev

ASP.NET CORE 1.0,模拟

来自分类Dev

ASP.NET Core TagHelper属性的默认值

来自分类Dev

ASP.NET Core中的属性

来自分类Dev

设置ASP.NET Core TagHelper属性而不进行编码

来自分类Dev

ASP.NET MVC 6(ASP.NET Core或ASP.NET5)中的友好URL

来自分类Dev

ASP.Net 5 MVC6 select taghelper产生错误的输出

来自分类Dev

Asp.NET MVC 6,TagHelper为模型本身“ asp-for”

来自分类Dev

ASP.NET MVC绑定嵌套列表

来自分类Dev

ASP.NET Core RequestDelegate多次触发

来自分类Dev

与Asp.net相比,ASP.net CORE的主要优势

来自分类Dev

如何将ASP-for TagHelper与反射结合使用

来自分类Dev

ASP.NET Core返回

来自分类Dev

ASP.NET Core WebSockets

来自分类Dev

ASP.NET Core TagHelper输入as-for呈现值属性在请求模型中保持原始值

来自分类Dev

与ASP.NET MVC BeginExecuteCore等效的ASP.NET Core

来自分类Dev

为什么在ASP.NET Core 2.2中无法解析TagHelper HtmlAttributeName

来自分类Dev

asp-area的taghelper在哪里,或如何创建一个具有区域的超链接?

来自分类Dev

ASP.NET Core TagHelper属性的默认值

来自分类Dev

设置ASP.NET Core TagHelper属性而不进行编码

来自分类Dev

ASP.Net核心嵌套区域

来自分类Dev

搜索嵌套的Gridview ASP.net

来自分类Dev

ASP.NET Core Web应用程序(.NET Framework)TagHelper Intellisense

来自分类Dev

从asp net 5迁移到asp net core时出错

来自分类Dev

asp .net 和 asp .net core 有什么区别?

来自分类Dev

带有 ASP.NET Core 2.2 的 Razor 页面中的嵌套/子区域

来自分类Dev

Asp.net core,缓存Taghelper和IMemoryCache有什么区别?

Related 相关文章

热门标签

归档