当前位置:网站首页>B/S端界面控件DevExtreme ASP.NET MVC入门指南 - 模板语法(一)
B/S端界面控件DevExtreme ASP.NET MVC入门指南 - 模板语法(一)
2022-04-21 19:42:00 【AABBbaby】
本系列文章将为大家介绍如何实现和应用模板,模板允许您自定义控件部分(标题、单元格、项目等)的呈现方式。
使用 *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
@Code
Html.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
@Code
Html.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
@Code
Html.DevExtreme().List() _
.DataSource(ListDataSource) _
.ItemTemplate(Sub()
@<text>
<div><%- Name %></div>
</text>
End Sub) _
.Render()
End Code
使用命名模板。
- 在 using(Html.DevExtreme().NamedTemplate(...)) 块中定义模板。
- 在 *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
@Code
Html.DevExtreme().Popup() _
.ID("myPopup") _
.ContentTemplate(New TemplateName("myPopupContentTemplate")) _
.Render()
End Code
@Using (Html.DevExtreme().NamedTemplate("myPopupContentTemplate"))
@Code
Html.DevExtreme().List() _
.DataSource(ListDataSource) _
.ItemTemplate(Sub()
@<text>
<%- Name %>
</text>
End Sub) _
.Render()
End Code
End 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
@Code
Html.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拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac,到ASP.NET Core或Vue,DevExtreme包含全面的高性能和响应式UI小部件集合,可在传统Web和下一代移动应用程序中使用。 该套件附带功能齐全的数据网格、交互式图表小部件、数据编辑器等。
DevExpress技术交流群6:600715373 欢迎一起进群讨论
版权声明
本文为[AABBbaby]所创,转载请带上原文链接,感谢
https://blog.csdn.net/AABBbaby/article/details/124313109
边栏推荐
- iMeta | EndNote调整完美引文格式教程(视频)
- 数商云:剖析企业采购管理的现状,推进企业采购模式优化升级
- 杰理之使用硬件定时器来模拟中断请求【篇】
- MySQL MHA high availability cluster deployment and failover
- 使用CMake构建/CMake命令参考
- Rapid generation of latex from excel tables
- mui选项卡怎么实现循环轮播
- Routing of messages in exchange
- 华为开发者创新中心教你一分钟了解HarmonyOS
- JVM topic (XI) - garbage collection (II)
猜你喜欢

MySQL MHA high availability cluster deployment and failover
![Sword finger offer: [day 29 dynamic programming (difficult)] --- > n dice points](/img/fe/1691eda08b8dbda532abc716d09143.png)
Sword finger offer: [day 29 dynamic programming (difficult)] --- > n dice points

OpenHarmony Sensor 模块Callback注册和回调全流程

Abbexa donkey anti goat IgG (H & L) antibody

Static link and dynamic link

switch分支

MYSQL输入密码后闪退的解决方法

Alternative JC-1, mito-id series mitochondrial membrane potential detection kit

Linux Centos7 安装MySql8 (简单、实测可行)

邮件在Exchange中的路由过程
随机推荐
Interviewer: a brief talk about go escape analysis?
Lenovo promises that 100% of all computer products will contain recycled plastics by 2025
Today's sleep quality record is 83 points
Leetcode goat Latin [analog string] the way of leetcode in heroding
ROS知识:如何实现相机接入
数商云:剖析企业采购管理的现状,推进企业采购模式优化升级
OpenCV之OpenCL介绍
[netty] is it difficult to implement a redis client by yourself?
Frame rate, code rate, resolution and definition
Use cmake to build / cmake Command Reference
Release announcement of HMS core version 6.4.0
auto 关键字的使用
使用CMake构建/Qt 5和Qt 6兼容性
Connection of Navicat Mysql to MySQL under Linux and 2003 error resolution
数据分析之数据预处理
一加宣布未来产品将入驻 OPPO 门店,还将首发集团新资源
在多文件中C语言中全局变量的重定义
Leetcode0886. Possible dichotomy (medium)
Interpretation of YACs in detectron 2
关系型数据库与非关系型数据库概述,Redis简介、常用命令及优化