asp.mvc展示model
1. ASP.Net MVC 3 Model 简介 通过一简单的事例一步一步的介绍
2. ASP.Net MVC 3 Model 的一些验证
MVC 中 Model 主要负责维持数据状态,将数据从数据存储器中检索并传递给控制器,客户端传送过来的数据通过处理后再传回数据存储系统中。是MVC中较为重要的一层。
这里为什么说是数据存储器而不是数据库,我们以前经常说的就是重数据库中增删改查数据等等什么的,但是 MVC 的Model 不单单只能在数据库中操作数据也能通过其他方式操作数据。学过java的ssh三大框架的人都应该知道hibernate 框架吧!java 中的hibernate框架就是ORM的典型应用!咱们.net 平台也有些访问数据库的框架比如说ling to sql Entity Framework NHibernate 等。所以说呢不是操作数据库而是操作数据存储器。
下面用一个简单的事例演示一下
本实例用list模拟一些person类的对象然后再view 层中显示出来。
1. 首先先在Model层中新建一个Person 类。

按 Ctrl+C 复制代码 按 Ctrl+C 复制代码
此Person类简单了定义了几个属性。注意第一行的命名空间Mvc3App1.Models 一会在Controller 中会用到。
2. 新建一个Controller 在这我就不截图了因为前面有一篇专讲Contoller 的文章不了解Controller 的请您先看下Controller的文章 ASP.Net MVC 3 Controller
2.1 首先如果在Controller中用Model层中的实体类首先必须引入命名空间
using Mvc3App1.Models;
2.2 在Index() 这个Action 方法中定义一个List 集合 然后给它初始化几个对象。
2.3 添加一个View


ok 到此为止,View - Controller - Model 都已经创建完毕,下面咱接着看View层的结构。

1 @model Mvc3App1.Models.Person
2
3 @{
4 ViewBag.Title = "Index";
5 }
6
7 <h2>Index</h2>

看第一行,就是将Action 返回的结果存到model中但是,咱返回的是一个List集合那怎么办呢?好办用集合接收不就完事了,再这提醒您一句如果您看不懂@符号是干什么使的,我建议您先看一下我前面讲 Razor 视图的两篇文章 ASP.NET MVC 3 Razor 视图引擎 基本语法 ASP.NET MVC 3 Razor 视图引擎 布局
好下面咱就先解决第一个问题怎么用集合接受
@model IEnumerable<Mvc3App1.Models.Person>
用IEnumerable接收就 ok 了,有人问它是什么东东,告诉您 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代 List ArrayList 等 就实现的该接口。
12 - 14 行 foreach 遍历输出
写着这么多了先看下运行结果吧!

数据返回到View层了,那么View层怎么将参数传给Controller 好下面咱再添加一个Detaile 用于显示详情的Action

1 public class MTestController : Controller
2 {
3 //新建一个泛型集合然后给他初始化一些数据
4 private List<Person> persons = new List<Person>
5 {
6 new Person { IdCard = "001", Name = "张三", Age = 21, Sex = "男"},
7 new Person { IdCard = "002", Name = "李四", Age = 21, Sex = "男"},
8 new Person { IdCard = "003", Name = "王麻子", Age = 21, Sex = "男"},
9 new Person { IdCard = "004", Name = "赵六", Age = 21, Sex = "男"},
10 };
11 public ActionResult Index()
12 {
13 return View(persons);
14 }
15
16 public ActionResult Detaile(string id)
17 {
18 Person person = persons.Find(p=>p.IdCard == id);
19 return View(person);
20 }
21
22 }

为了数据共享将4-9行虚拟的数据提到方法外面去,Detaile方法接受一个id参数,为了不再修改路由就可以直接运行这里就用id代表IdCard。然后调用List集合中的find方法查询。
再看一下Detaile 的View 层是怎么写的吧!

@model Mvc3App1.Models.Person
@{
ViewBag.Title = "Detaile";
}
<h2>详细信息</h2>
编号:@Model.IdCard 姓名:@Model.Name 性别:@Model.Sex 年龄:@Model.Age

很简单不再做额外的解释,好下一步改写Index 的View层代码
将foreach中的语句改为
<li>@person.IdCard-@Html.ActionLink(person.Name,"Detaile",new {id=person.IdCard})</li>
简单说就是给姓名文本加一个a标签 (超链接)但是这个标签和以前的有点不同,这就是MVC 为了简化代码,出的HTML helper 但是今天的主角不是它,我简单的说先上面这行语句就行了
Html.ActionLink 从英语单词上不难理解它就代表一个超链接,其中第一个参数是超链接的文本- 第二个参数的转向那个Action 及 Action 的名字,第三个是传的参数。
看下运行结果吧!
Index

Detaile

asp.mvc展示model的更多相关文章
- Asp.net MVC使用Model Binding解除Session, Cookie等依赖
上篇文章"Asp.net MVC使用Filter解除Session, Cookie等依赖"介绍了如何使用Filter来解除对于Session, Cookie的依赖.其实这个也可以通 ...
- Asp.net MVC的Model Binder工作流程以及扩展方法(2) - Binder Attribute
上篇文章中分析了Custom Binder的弊端: 由于Custom Binder是和具体的类型相关,比如指定类型A由我们的Custom Binder解析,那么导致系统运行中的所有Action的访问参 ...
- Asp.net MVC的Model Binder工作流程以及扩展方法(1) - Custom Model Binder
在Asp.net MVC中, Model Binder是生命周期中的一个非常重要的部分.搞清楚Model Binder的流程,能够帮助理解Model Binder的背后发生了什么.同时该系列文章会列举 ...
- [转]ASP.NET MVC 2: Model Validation
本文转自:http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx?CommentPo ...
- ASP.NET MVC 3 Model【通过一简单实例一步一步的介绍】
今天主要讲Model的两个方面: 1. ASP.Net MVC 3 Model 简介 通过一简单的事例一步一步的介绍 2. ASP.Net MVC 3 Model 的一些验证 MVC 中 Model ...
- Asp.net MVC的Model Binder工作流程以及扩展方法(1)
Asp.net MVC的Model Binder工作流程以及扩展方法(1)2014-03-19 08:02 by JustRun, 523 阅读, 4 评论, 收藏, 编辑 在Asp.net MVC中 ...
- ASP.NET MVC 之Model的呈现
ASP.NET MVC 之Model的呈现(仅此一文系列三) 本文目的 我们来看一个小例子,在一个ASP.NET MVC项目中创建一个控制器Home,只有一个Index: public class H ...
- 区别:ASP.NET MVC的Model、DTO、Command
最近在用CQRS架构模式做项目,有些感悟,记录下来. 问题的描述(大家是否也存在过类似的情况呢?): 从刚开始时项目中没有区分这3种对象,所以导致了很多职责公用,然后就乱了,比如Command一部分职 ...
- ASP.NET的MVC中Model对象字段的数…
ASP.NET的MVC中Model对象字段的常用数据说明属性: Required——该字段不允许为空. MaxLength——设置数组或字符串最大长度. StringLength——设置字符串最小和最 ...
随机推荐
- 【Atcoder】ARC 080 F - Prime Flip
[算法]数论,二分图最大匹配 [题意]有无限张牌,给定n张面朝上的牌的坐标(N<=100),其它牌面朝下,每次操作可以选定一个>=3的素数p,并翻转连续p张牌,求最少操作次数使所有牌向下. ...
- linux平台从源码安装git【转】
转自:http://blog.csdn.net/lianshaohua/article/details/50571560 版权声明:本文为博主原创文章,未经博主允许不得转载. 如果是ubuntu等能自 ...
- selenium自动化添加日志
于logging日志的介绍,主要有两大功能,一个是控制台的输出,一个是保存到本地文件 先封装logging模块,保存到common文件夹命名为logger.py,以便于调用,直接上代码 filenam ...
- Shell 脚本实现TCP/UDP协议通讯
Shell 脚本实现TCP/UDP协议通讯 http://www.cnblogs.com/occult/archive/2012/12/25/2832183.html
- C#区分大小写
连属性也是要区分大小写的,如 获取数据长度 错误:strs.length 这样是报错的 正确:strs.Length
- Smith-Waterman算法及其Java实现
Smith-Waterman算法是1981年Smith和Waterman提出的一种用来寻找并比较具有局部相似性区域的动态规划算法,很多后来的算法都是在该算法的基础上发展的.这是一种两序列局部比对算法, ...
- 四维偏序(K-D-Tree+rebuild)
其实只是放个代码,会K-D-Tree的同学看了就知道怎么rebuild了,其实也是很简单粗暴的…… 单独再发一次吧,感觉把代码跟之前的一起发不知道啥时候就找不到了…… #include<bits ...
- Ubuntu部署Java web项目
登录服务器和给服务器传输文件,使用的工具是Xshell Xftp Mysql 安装mysql 输入:sudo apt-get update 更新软件列表 输入: ...
- DRF-自动生成接口文档
REST framework可以自动帮助我们生成接口文档. 接口文档以网页的方式呈现. 自动接口文档能生成的是继承自APIView及其子类的视图. 1. 安装依赖 REST framewrok生成接口 ...
- 【C++】类的特殊成员变量+初始化列表
参考资料: 1.黄邦勇帅 2.http://blog.163.com/sunshine_linting/blog/static/448933232011810101848652/ 3.http://w ...