【发布时间】: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