Taurus.MVC WebMVC 入门开发教程4:数据列表绑定List<Model>
前言:
在本篇 Taurus.MVC WebMVC 入门开发教程的第四篇文章中,
我们将学习如何实现数据列表的绑定,通过使用 List<Model> 来展示多个数据项。
我们将继续使用 Taurus.Mvc 命名空间,同时探讨如何在视图中绑定并显示一个 Model 列表。
步骤1:创建 Model
首先,我们需要更新我们的 Model 类,使其能够表示多个数据项。
我们可以继续沿用之前的 User 类,不过这次我们将创建一个包含多个 User 对象的列表。
public class User
{
public string Name { get; set; }
public int Age { get; set; }
}
步骤2:更新控制器
接下来,我们需要更新控制器以支持传递包含多个 User 对象的列表到视图中。
在 HomeController.cs 文件中,修改 Index 方法来创建一个包含多个 User 对象的列表,并传递给视图。
public class HomeController : Taurus.Mvc.Controller
{
public void Index()
{
List<User> userList = new List<User>
{
new User { Name = "Alice", Age = 25 },
new User { Name = "Bob", Age = 30 },
new User { Name = "Charlie", Age = 28 }
}; View.SetForeach(userList, "list");
} }
我们通过 View 的 SetForeach 方法,来接收列表数据,并同时进行界面渲染。
同时,我们在SetForeach的第二个方法中,指定界面元素的ID,以便我们知道要渲染的是哪个节点。
步骤3:更新视图
现在,我们需要更新视图来显示列表中的每个 User 对象的信息。
在 Index.html 视图文件中,我们可以通过设定ID,并被代码端使用循环来遍历列表,并显示每个 User 对象的姓名和年龄。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>欢迎来到 Taurus.MVC WebMVC</title>
</head>
<body>
<h1>用户列表</h1>
<ul id="list">
<li>姓名:${Name},年龄:${Age}</li>
</ul>
</body>
</html>
在上述代码中,我们使用 同样使用 ${modelName} CMS 指令来绑定列表数据。
绑定使用的是视图所使用的 Model,其 类型为 List<User>。
然后,通过节点 id 传递到控制器中循环遍历列表中的每个 User 对象,并显示其姓名和年龄。
其循环的内容为id节点的内部文本,因此以下代码将被循环多次并进行替换:
<li>姓名:${Name},年龄:${Age}</li>
步骤4:运行应用程序
最后,运行应用程序并查看页面的呈现效果。
您将看到一个包含多个用户信息的列表被成功显示在页面上。

步骤5:循环嵌套的调用方式
有时候,界面可能涉及循环嵌套,以实现嵌套的结果。
例如:框架后台管理中的 Extend Menu 就用到了这个手法。
界面Html如:
<div id="menuList">
<div style="float:left"><b>${0} :</b></div>
<div name="hostList" style="float:left">
<a target="frame" href="${HostUrl}">${HostName}</a> |
</div>
<div style="clear:both;height:5px;">
</div>
</div>
一级节点:MenuList 为一级循环,其内部文本 ${0} 绑定标题。
说明:${0} 用来绑定分类标题,${Model} 语法,也可以根据索引来绑定数据。
二级节点:hostList 为二级循环,其内部文件有多个绑定项:${HostUrl} 和 ${HostName}
对于这种循环嵌套,对新手来手,是需要多习练习适应的。
这里我们看框架内部是怎么实现的:
internal partial class AdminController
{
#region 页面呈现 private MDataTable menuTable;
/// <summary>
/// Ext - Menu 展示
/// </summary>
public void Menu()
{ menuTable = new MDataTable();
menuTable.Columns.Add("MenuName,HostName,HostUrl");
MDataTable dtGroup = new MDataTable();
dtGroup.Columns.Add("MenuName"); List<string> groupNames = new List<string>(); #region 加载自定义菜单
......省略代码......
#endregion
View.OnForeach += View_OnForeach_Menu;
dtGroup.Bind(View, "menuList");
} private string View_OnForeach_Menu(string text, MDictionary<string, string> values, int rowIndex)
{
string menu = values["MenuName"];
if (!string.IsNullOrEmpty(menu))
{
//循环嵌套:1-获取子数据
MDataTable dt = menuTable.FindAll("MenuName='" + menu + "'");
if (dt != null && dt.Rows.Count > 0)
{
//循环嵌套:2 - 转为节点
XmlNode xmlNode = View.CreateNode("div", text);
//循环嵌套:3 - 获取子节点,以便进行循环
XmlNode hostNode = View.Get("hostList", xmlNode);
if (hostNode != null)
{
//循环嵌套:4 - 子节点,循环绑定数据。
View.SetForeach(dt, hostNode, hostNode.InnerXml, null);
//循环嵌套:5 - 返回整个节点的内容。
return xmlNode.InnerXml;
}
}
} return text;
} #endregion }
最后,运行应用程序并查看页面的呈现效果。
您将看到一个包含一级标题和多个二级标题列表被成功显示在页面上。

总结
通过本篇教程,我们学习了如何在 Taurus.MVC WebMVC 中实现数据列表的绑定,使用 List<Model> 来展示多个数据项。
我们更新了 Model 类、控制器和视图,成功实现了一个简单的数据列表绑定示例。
本系列的目录大纲为:
Taurus.MVC WebMVC 入门开发教程1:框架下载环境配置与运行 Taurus.MVC WebMVC 入门开发教程2:一个简单的页面呈现 Taurus.MVC WebMVC 入门开发教程3:数据绑定Model Taurus.MVC WebMVC 入门开发教程4:数据列表绑定List<Model> Taurus.MVC WebMVC 入门开发教程5:表单提交与数据验证 Taurus.MVC WebMVC 入门开发教程6:路由配置与路由映射 Taurus.MVC WebMVC 入门开发教程7:部分视图和页面片段
Taurus.MVC WebMVC 入门开发教程4:数据列表绑定List<Model>的更多相关文章
- Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程8:WebAPI文档与自动化测试。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。
前言: Taurus.MVC 微服务版本已经发布了:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 以前都是框架发布时写点相关功能点的文章,没有形成 ...
- Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程3:路由类型和路由映射。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程6:全局控制器DefaultController与全局事件。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑
前言: 为了赶进度,周末也写文了! 前几篇讲完查询框和工具栏,这节讲表格数据相关的操作. 先看一下列表: 接下来我们有很多事情可以做. 1:格式化 - 键值的翻译 对于“启用”列,已经配置了格式化 # ...
- Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)
前言: 抓紧勤奋,再接再励,预计共10篇来结束这个系列. 上一篇介绍:ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 本篇介绍主键操作区相关内容. 1:什么时候有默认的 ...
随机推荐
- [转帖]Tail Latency学习
https://www.cnblogs.com/Rohn/p/15123758.html Latency,中文译作延迟,Tail Latency即尾延迟. 实际生产中的Latency是一种(概率)分布 ...
- Nginx与Tomcat作为前端服务器的性能比较
Nginx与Tomcat作为前端服务器的性能比较 摘要 最近总遇到使用tomcat还是使用nginx进行前端文件访问的争论 想着出差周末在酒店, 可以自己进行一下简单的测试. 希望能够对未来的工作进行 ...
- Windows 远程时提示CredSSP 加密数据库修正 问题的简单处理.
最近在公司内部远程机器的时候更新了 windows上面远程部分服务器的时候出现异常如图示: 查了下 还是有比较简单的解决办法的 问题是需要在 自己的客户端机器上面进行设置 不需要修改服务器端的服务器. ...
- 2022 倒带 - NutUI
作者:京东零售 于明明 前言 时光飞逝,流年似水,让我们倒带 2022,回首这跌宕起伏一年走过的 "升级之路". NutUI 表现如何? 成绩单等着您打分! 2022 是 NutU ...
- 手把手带你开发starter,点对点带你讲解原理
京东物流 孔祥东 _____ _ ____ _ / ____| (_) | _ \ | | | (___ _ __ _ __ _ _ __ __ _| |_) | ___ ___ | |_ \___ ...
- kettle系统列文章02---如何建立一个转换
1.连接mysql 主对象树---->DB连接---->新建 2.连接sqlserver 主对象树--->DB连接----->新建 3.设置数据库为共享:在db上右键---&g ...
- OpenIM集群(非k8s)部署文档
自行部署etcd/zookeeper/mysql/kafka/mongo/redis集群,可以根据此性能评估服务器需求. 以下是针对一台华为云主机s3的压测数据:8核16G内存,普通磁盘(非SSD)( ...
- Docker从认识到实践再到底层原理(二-1)|容器技术发展史+虚拟化容器概念和简介
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总 然后就是博主最近最花时间的一 ...
- Hello,World! 6.28
代码 public class Hello{ public static void main(String[] args){ System.out.print("Hello,World!&q ...
- 素数打表,洛谷P1217 [USACO1.5]回文质数 Prime Palindromes
这道题的最后一个样例TLE(超时)了,判断素数的条件是 i*i<n 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include ...