【问题标题】:How to write an ASP.NET MVC Core TagHelper that would support template for collection/iteration如何编写支持集合/迭代模板的 ASP.NET MVC Core TagHelper
【发布时间】:2017-03-17 12:05:43
【问题描述】:

我已经编写了一堆 HTML Helper,它们基本上涵盖了所有 HTML 元素和一些 HTML 结构,如选项卡、分页器、树等。现在,我想将它们转换为 TagHelper。但是我找不到一种方法来做一件重要的事情。

为了使用我的 HTML 助手生成表格,您需要编写如下内容:

@(Html.Table(Model.Items).Columns(columns =>
{
    columns.BoundColumn(m => m.Id).Class("id");
    columns.TemplateColumn().Class("switch")
        .Pattern((model, pattern) => pattern.Html(@<span>@(model.Title)</span>));
    columns.BoolColumn(m => m.Default);

})

它将集合作为构造函数参数并使项目类型可用于 Columns 属性,以便可以使用 lambda/匿名函数将项目属性绑定到定义的列。我有几个列根据其类型呈现文本/html - BoundColumn 呈现文本,BoolColumn 将 bool 作为值并呈现是/否,LinkColumn 呈现链接。还有一个 TemplateColumn 接受 IHtmlString,这样你就可以传递任何你想为特定列显示的 html 结构。

所以我希望 TagHelper 看起来像这样:

<tee-table data-source="Model.Items">
  <columns>
    <bound value="Id" />
    <bool value="Default" />
    <template value="SomeComplexType">
      <span>@value.Title</span>
    </template>
  </columns>
</tee-table>

但看起来 TagHelpers 根本不支持这个。我找到了这篇文章:http://www.dotnet-programming.com/post/2015/10/31/Building-Complex-Controls-with-AspNet-MVC-6-TagHelpers.aspx 这与我想做的事情有点接近,但还不够接近。它仍然需要在视图中进行迭代,这是我想要避免的。主要是因为标签助手应该支持 MVC 视图中的“HTML 感觉”。

那么有没有办法构建一个可以作为集合项目模板的 TagHelper?

【问题讨论】:

    标签: c# asp.net-core asp.net-core-mvc asp.net-core-tag-helpers


    【解决方案1】:

    目前(截至 2017 年 3 月 21 日)TagHelpers 没有很好的方法来处理这个问题。但是,向 TagHelpers here 添加模板支持仍然存在问题。

    【讨论】:

    • 感谢您的链接。让我们希望尽快实施某种支持。
    猜你喜欢
    • 2014-11-24
    • 1970-01-01
    • 2013-06-06
    • 2017-03-19
    • 2011-12-21
    • 1970-01-01
    • 2017-11-16
    • 2014-10-03
    • 1970-01-01
    相关资源
    最近更新 更多