前言:

在本篇 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. [转帖]IPv6地址解析库,窥探IPv6地址中包含的信息

    https://zhuanlan.zhihu.com/p/479028720 大家好,我是明说网络的小明同学. 今天和大家介绍一个IPv6 地址解析库IPv6 address Parser :http ...

  2. [转帖] shell管道咋堵住了

    https://www.cnblogs.com/codelogs/p/16060378.html 背景# 起因是这样的,我们想开发一个小脚本,当cpu使用率过高时,使用jstack将java的线程栈保 ...

  3. vue3中watch监听不是你想的那样简单

    vue3 中watch监听数组,数组变化后未触发回调 今天发生了一个很神奇的现象,就是我使用watch监听数组时. 被监听的数组已经发生了变化.但是没有触发回调操作. 当时的我感到很疑惑? 不应该呀? ...

  4. HTMl插入视频背景

    插入视频背景一段简单的css即可 首先定义HTML的video标签 <video src="视频路径" class="bjimg" autoplay lo ...

  5. 【云原生】为什么要虚拟化,为什么要容器,为什么要Docker,为什么要K8S?

    前言 如标题中的问题所提到的虚拟化,容器,Docker和K8s那样,我们不妨这样问:这些技术到底适用于哪些场景,有没有别的技术可以替代?这些技术的优劣在哪里? 下面我将针对性地从以上几个问题的出发点, ...

  6. 码云gitee创建仓库并用git上传文件

    相关文章链接: 码云(gitee)配置SSH密钥 码云gitee创建仓库并用git上传文件 git 上传错误This oplation equires one of the flowi vrsions ...

  7. 7.6 Windows驱动开发:内核监控FileObject文件回调

    本篇文章与上一篇文章<内核注册并监控对象回调>所使用的方式是一样的都是使用ObRegisterCallbacks注册回调事件,只不过上一篇博文中LyShark将回调结构体OB_OPERAT ...

  8. C# 笔记之基本语法

    C#是一种现代的.通用的编程语言,由微软公司开发和推广.它于2000年发布,是一种结构化.面向对象和组件化的语言,旨在为Windows操作系统和Microsoft .NET框架提供强大的支持.可用于开 ...

  9. C/C++ 通过Socket 传输结构体

    本质上socket无法传输结构体,我们只有将结构体装换为字节数组,或者是字符串格式来传输,到了服务端在强制类型转换一下即可,下面的代码分别提供原生写法与通过boost的实现两种,直接改改,可用于收集目 ...

  10. 私有化部署chatGPT,告别网络困扰

    最近的chatGPT是热火朝天,基本人手一个.工具用的好,工作5分钟,划水一整天. 不过最近ChatGPT的访问越来越限制了,访问官网都有网络的问题,今天小卷给大家介绍一个方案,私人独享属于自己的ch ...