前言:

在本篇 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>&nbsp;&nbsp;|&nbsp;
</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>的更多相关文章

  1. Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  2. Taurus.MVC WebAPI 入门开发教程8:WebAPI文档与自动化测试。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  3. Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。

    前言: Taurus.MVC 微服务版本已经发布了:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 以前都是框架发布时写点相关功能点的文章,没有形成 ...

  4. Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  5. Taurus.MVC WebAPI 入门开发教程3:路由类型和路由映射。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  6. Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  7. Taurus.MVC WebAPI 入门开发教程6:全局控制器DefaultController与全局事件。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  8. ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑

    前言: 为了赶进度,周末也写文了! 前几篇讲完查询框和工具栏,这节讲表格数据相关的操作. 先看一下列表: 接下来我们有很多事情可以做. 1:格式化 - 键值的翻译 对于“启用”列,已经配置了格式化 # ...

  9. Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  10. ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)

    前言: 抓紧勤奋,再接再励,预计共10篇来结束这个系列. 上一篇介绍:ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 本篇介绍主键操作区相关内容. 1:什么时候有默认的 ...

随机推荐

  1. 除了Adobe之外,还有什么方法可以将Excel转为PDF?

    前言 Java是一种广泛使用的编程语言,它在企业级应用开发中发挥着重要作用.而在实际的开发过程中,我们常常需要处理各种数据格式转换的需求.今天小编为大家介绍下如何使用葡萄城公司的的Java API 组 ...

  2. Python 潮流周刊第 37 期(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  3. Rocketmq学习4——Broker消息持久化原理源码浅析

    一丶前言 在<Rocketmq学习3--消息发送原理源码浅析>中,我们学习了消息发送的要点: 本地缓存+rpc 请求namesever + 定时刷新,topic路由信息 负载均衡的选择一个 ...

  4. python2排序

    python list cmp排序 对于list的排序一般使用cmp 示例: sorted(xxlist, cmp=self.sortFunc) def sortFunc(self, a, b): r ...

  5. TienChin-课程管理-添加课程接口

    CourseController.java @PreAuthorize("hasPermission('tienchin:course:create')") @Log(title ...

  6. 【6】opencv采用映射技术实现鱼眼镜头校正和鱼眼镜头还原全景图。

    相关文章: [1]windows下安装OpenCV(4.3)+VS2017安装+opencv_contrib4.3.0配置 [2]Visual Studio 2017同时配置OpenCV2.4 以及O ...

  7. 部署MooseFS分布式文件系统

    MooseFS是一个分布式文件系统,其本身具有高可用性,高拓展性,开放源代码,高容错,等在数据的读写性能方面,通过dd测试,MooseFS也就是写入的速度稍微好于NFS,读上没有差别. MooseFS ...

  8. C/C++ Qt 编译打包项目

    Qt程序编译后,需要去qt目录拷贝几个文件,与qt程序放在一起该程序才可以脱离开发环境而独立运行下去,在开发环境下编译好代码以后,还需要进行以下操作将其打包才可以在别的机器上正常运行. QT的下载地址 ...

  9. Eslint 的rules一些配置 (.eslintrc.js文件中的rules选项)

    rules: { // off=0, warn=1, error=2, 如果是数组, 第二项表示参数option // indent: [2, 2], // 控制缩进为2 eqeqeq: 1, // ...

  10. jetson nano ssh远程连接控制

    jetson orin nano ssh远程连接 准备:好用的网线一根,jetson orin nano一台,将网线两端连接nano的网口以及当作主机的笔记本的网口 PS:确保双方网线连接成功,网线设 ...