B/S端界面控件DevExtreme ASP.NET MVC入门级教程:模板语法(一)

本系列文章将为大家介绍如何实现和应用模板,本节主要介绍模板语法,欢迎下载产品体验!

本系列文章将为大家介绍如何实现和应用模板,模板允许您自定义控件部分(标题、单元格、项目等)的呈现方式。

使用 *Template() 方法定义模板,例如:

  • DataGridColumnBuilder.CellTemplate – 为DataGrid控件中的列单元格指定模板。
  • ListBuilder.ItemTemplate – 为 List 控件中的项目指定模板。
  • PopupBuilder.ContentTemplate – 为 Popup 控件的内容指定模板。
模板语法

模板由 Razor 标记和可以使用参数的 ERB 样式构造 (<% %>) 组成,要定义模板,请在控件的 *Template(RazorBlock templateContent) 方法中使用 @<text>块。

注意:Razor VB:当您使用 @<text> 块时:

  • 用@Code/End Code 附上控件配置;
  • 使用 Render() 结束控件配置。

Razor C#

@(Html.DevExtreme().List().DataSource(DataSource).ItemTemplate(@<text><div><%- Name %></div></text>))

Razor VB

@CodeHtml.DevExtreme().List() _.DataSource(DataSource) _.ItemTemplate(Sub()@<text><div><%- Name %></div></text>End Sub) _.Render()End Code

List 控件绑定到以下数据源:

C#

object[] DataSource = new[] {new { Name = "John" },new { Name = "Jane" }};

VB

Dim DataSource = {New With {.Name = "John"},New With {.name = "Jane"}}

您还可以在模板中使用 @Html,例如嵌套控件或访问标准 HTML 帮助程序。

如果模板很短且不使用 Razor 构造(以 @ 开头),则可以使用带有 String 参数的 *Template 方法的速记重载:

Razor C#

@(Html.DevExtreme().List().DataSource(DataSource).ItemTemplate("<div><%- Name %></div>"))

Razor VB

@(Html.DevExtreme().List() _.DataSource(DataSource) _.ItemTemplate("<div><%- Name %></div>"))
外部模板

您可以在控件声明之外定义模板,这在以下情况下很有用:

  • 模板很大;
  • 想重用一个模板;
  • 需要嵌套模板(下面的代码演示了如何将 List 控件嵌套在 Popup 控件中)。

Razor C#

@(Html.DevExtreme().Popup().ID("myPopup").ContentTemplate(@<text>@Html.Partial("_MyPopupContentTemplate")</text>))

Razor VB

@CodeHtml.DevExtreme().Popup() _.ID("myPopup") _.ContentTemplate(Sub()@<text>@Html.Partial("_MyPopupContentTemplate")</text>End Sub) _.Render()End Code

Shared/_MyPopupContentTemplate.cshtml

@(Html.DevExtreme().List().DataSource(ListDataSource).ItemTemplate(@<text><div><%- Name %></div></text>))

Shared/_MyPopupContentTemplate.vbhtml

@CodeHtml.DevExtreme().List() _.DataSource(ListDataSource) _.ItemTemplate(Sub()@<text><div><%- Name %></div></text>End Sub) _.Render()End Code

使用命名模板。

  1. 在 using(Html.DevExtreme().NamedTemplate(…)) 块中定义模板。
  2. 在 *Template(TemplateName name) 方法中指定模板名称。

Razor C#

@(Html.DevExtreme().Popup().ID("myPopup").ContentTemplate(new TemplateName("myPopupContentTemplate")))@using (Html.DevExtreme().NamedTemplate("myPopupContentTemplate")) {@(Html.DevExtreme().List().DataSource(ListDataSource).ItemTemplate(@<text><div><%- Name %></div></text>))}

Razor VB

@CodeHtml.DevExtreme().Popup() _.ID("myPopup") _.ContentTemplate(New TemplateName("myPopupContentTemplate")) _.Render()End Code@Using (Html.DevExtreme().NamedTemplate("myPopupContentTemplate"))@CodeHtml.DevExtreme().List() _.DataSource(ListDataSource) _.ItemTemplate(Sub()@<text><%- Name %></text>End Sub) _.Render()End CodeEnd Using

可以在声明控件或布局的同一 Razor 文件中声明命名模板。

注意:

  • 模板名称在整个应用程序中应该是唯一的。
  • 命名模板应该在顶层定义,它们不能在另一个模板中声明。

使用 Razor @helper 指令将模板标记提取到函数中。

Razor C#

@(Html.DevExtreme().Popup().ID("myPopup").ContentTemplate(@<text>@MyPopup_List()</text>))@helper MyPopup_List(){@(Html.DevExtreme().List().ItemTemplate(@<text>@MyPopup_List_Item()</text>))}@helper MyPopup_List_Item(){<text><div><%- Name %></div></text>}

Razor VB

@CodeHtml.DevExtreme().Popup() _.ID("myPopup") _.ContentTemplate(Sub() Write(MyPopup_List())) _.Render()End Code@helper MyPopup_List()@(Html.DevExtreme().List() _.ItemTemplate(Sub() Write(MyPopup_List_Item())))End Helper@helper MyPopup_List_Item()@<text><div><%- Name %></div></text>End Helper

DevExtreme | 下载试用


DevExpress技术交流群6:600715373      欢迎一起进群讨论

DevExpress企业定制服务
标签:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年3月17日
下一篇 2022年3月17日

相关推荐

发表回复

登录后才能评论