【问题标题】:Need help in tag helper in Asp.Net core 1.0 (Visual Studio 2015)在 Asp.Net core 1.0 (Visual Studio 2015) 中的标签助手中需要帮助
【发布时间】:2017-08-07 23:52:28
【问题描述】:

我无法在 Visual Studio 2015 中制作标签助手工作 ASP.Net 核心项目。项目中没有编译错误。当我运行项目时,标签助手没有被渲染。我在 Tag helper 的“Process”方法中设置了断点,但它没有出现。请告诉我如何使它工作。

1.在“project.json”文件的“dependencies”部分中包含“Microsoft.AspNet.Mvc.TagHelpers”:“6.0.0-rc1-final”。

2.在_ViewImports.cshtml文件中添加@addTagHelper *、Microsoft.AspNetCore.Mvc.TagHelpers。

3.在Index.cshtml中添加以下代码

<table generate-rows="@Model.Count()" source-model="@Model"></table>

4.标签助手代码

using System.Collections;
using System.Text;
using System.Reflection;
using Microsoft.AspNetCore.Razor.TagHelpers;
using Microsoft.AspNetCore.Mvc.ViewFeatures;

namespace MVC_TagHelper.CustomTagHelper
{
    [HtmlTargetElement("table",Attributes ="generate-rows,source-model")]
    public class TableTagHelper : TagHelper
    {
        [HtmlAttributeName("generate-rows")]
        public int RepeatCount { get; set; }
        [HtmlAttributeName("source-model")]
        public ModelExpression DataModel { get; set; }
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            IEnumerable model = DataModel.Model as IEnumerable;
            if (model == null)
                return;
            else
            {
                StringBuilder sb = new StringBuilder();
                foreach (var m in model)
                {
                    PropertyInfo[] properties = m.GetType().GetProperties();
                    string html = "<tr>";
                    for (int i = 0; i < properties.Length; i++)
                    {
                        html += "<td>" + m.GetType().GetProperty(properties[i].Name).GetValue(m, null) + "</td>";
                    }
                    html += "</tr>";
                    sb.Append(html);
                }
                output.Content.SetHtmlContent(sb.ToString());
            }
        }
    }
}

【问题讨论】:

    标签: c# visual-studio-2015 asp.net-core-tag-helpers


    【解决方案1】:

    检查_ViewImports.cshtml。确保它包含对您的标签助手类命名空间的引用:

    @using MVC_TagHelper;
    @addTagHelper *, MVC_TagHelper
    

    前段时间我也遇到过同样的问题。

    【讨论】:

    • 谢谢,我收到错误 - 无法解析包含程序集“MVC_TagHelper”的 TagHelper。错误:无法加载文件或程序集“MVC_TagHelper”或其依赖项之一。该系统找不到指定的文件。项目名称和默认名称空间是 MVC_TagHelper。控制器命名空间是 MVC_TagHelper.Web。 Tag Helper 命名空间是 MVC_TagHelper.CustomTagHelper,它的类名是 TableTagHelper。 _ViewImports.cshtml 文件 - 使用 MVC_TagHelper addTagHelper *、Microsoft.AspNetCore.Mvc.TagHelpers addTagHelper *、MVC_TagHelper
    • @user1396423 这是因为您在其中实现标签助手的程序集未被称为MVC_TagHelper。 (我之所以这么说是因为我假设该名称源自MVC_TagHelper.CustomTagHelper)。将其更改为正确的程序集名称,它应该是它。
    • 我试过了,先生,但还是不行。我不明白出了什么问题。
    • 您是遇到同样的错误还是您的 taghelper 再次被忽略?
    • 是的,我遇到了同样的错误 - 无法解析包含程序集“MVC_TagHelper.CustomTagHelper”的 TagHelper。错误:无法加载文件或程序集“MVC_TagHelper.CustomTagHelper”或其依赖项之一。系统找不到指定的文件。
    最近更新 更多