无废话MVC入门教程二[第一个小Demo]

本文目标
1.了解"模型"、"视图"、"控制器"的创建、调试和使用过程。
本文目录
1.创建模型
2.创建视图
3.创建控制器
4.调试
5.使用模型、视图、控制器
1.创建模型
在文件夹"Models"中创建新类,如下图所示:
1、命名:Model的命名规则一般以Model结尾,如:以业务为主的命名UserModel或以页面为主的命名LoginModel。
2、作用:开发过三层的朋友都知道,我们在表示层、业务逻辑层、数据操作层进行数据传输的时候会用到的DTO一般都单独建立成名称为Model的类库项目。其实此处的Models文件夹中的类与我们曾经用到的数据传输对象本质上是一致的。当然也会有些区别,我们后面再说。
3、代码示例:

1 /*
2 *
3 * 创建人:李林峰
4 *
5 * 时 间:2013-2-24
6 *
7 * 描 述:用户模型
8 *
9 */
10
11 using System;
12
13 namespace MVC3.Demo.Models
14 {
15 //以业务为主的用户模式
16 public class UserModel
17 {
18 public int UserID { get; set; } //用户编号
19 public string UserName { get; set; } //用户名
20 public string Password { get; set; } //密码
21 public int Sex { get; set; } //性别,0男,1女
22 public int Age { get; set; } //年龄
23 public int Political { get; set; } //政治面貌
24 public int Height { get; set; } //身高
25 public int Weight { get; set; } //体重
26 public string Graduated { get; set; } //毕业院校
27 public string Professional { get; set; } //专业
28 public DateTime GraduatedDate { get; set; } //毕业日期
29 public string Address { get; set; } //现住地址
30 public string Phone { get; set; } //联系电话
31 public string ImagePath { get; set; } //头相地址
32 public string Other { get; set; } //其他描述
33 }
34
35 //以页面为主的用户登陆模型
36 public class LoginModel
37 {
38 public string UserName { get; set; } //用户名
39 public string Password { get; set; } //密码
40 }
41 //以页面为主的用户注册模式
42 public class RegeditModel
43 {
44 public string UserName { get; set; } //用户名
45 public string Password { get; set; } //密码
46 public int Sex { get; set; } //性别
47 public int Age { get; set; } //年龄
48 }
49 }

2.创建视图
在创建视图以前我们先要创建一个名称为User的文件夹,在User文件夹中创建视图("Add"-->"View"),如下图所示:
1、名称:同以往的名称一样,以页面的功能为主,此处为:Login。
2、模板引擎:此处选择Razor(原因请看我的上一篇文章)。
3、创建强类型视图:此处勾选后一拉列表中会自动罗列出我们已建的模型(注意:这里显示的只是Build以后的,有时候刚刚建立完Model在此处是没有的,Build以后才可以出现),如我们刚才建立的三个Model都会在此处显示。勾选与不勾选的区别仅仅在于创建后的View文件中是否存在与Model关联的代码,这点在代码块中我会加注释说明。
4、框架模板:只有选择了Model class后此项才是可选的,其中有“创建、删除、详细、编辑、空、列表”选择项,当选择了其中的某项模板后VS2010会自动生成对应Model的操作代码。该功能实际上是VS2010的一个View代码生成器。
5、创建部分页:与传统的aspx页面UserControl作用是一样的,可以一次创建应用在不同的View中。
6、选择母板页:可选择是否选择母板页
7、代码示例:

1 @model MVC3.Demo.Models.LoginModel
2 <!--如果是创建强类型的视图并选择了LoginModel,上面的代码则由vs自动生成,仅仅是一段代码,手写的效果是一样的,所以一般情况我不会勾选“强类型视图”-->
3 @{
4 Layout = null;
5 }
6 <!--Layout用于母板页的布局,在本系列的第四篇文章中会详细讲解-->
7 <!DOCTYPE html>
8 <html>
9 <head>
10 <title>用户登陆</title>
11 </head>
12 <body>
13 <!--Html.BeginForm()等同于在html代码里写<form>.....</form>是一样的-->
14 @using (Html.BeginForm())
15 {
16 <div>
17 用户名:
18 </div>
19 <div>
20 <!--创建用户名文本框,等同于<input type="text" />-->
21 @Html.TextBoxFor(model => model.UserName)
22 </div>
23 <div>
24 密码:
25 </div>
26 <div>
27 <!--创建用户名文本框,等同于<input type="password" />-->
28 @Html.PasswordFor(model => model.Password)
29 </div>
30 <div>
31 <input type="submit" value="登录" />
32 </div>
33 }
34 </body>
35 </html>

3.创建控制器
在Control文件夹中创建"UserController",如下图所示:
1、名称:必须以Controller结尾。
2、模板:其中有三项可选,分别为“空、使用EF、直接读写”,功能类似代码生成器,选择后VS2010自动在创建的类中添加方法代码块。
3、代码示例:

1 /*
2 *
3 * 创建人:李林峰
4 *
5 * 时 间:2013-2-24
6 *
7 * 描 述:用户控制器
8 *
9 */
10
11 using System;
12 using System.Collections.Generic;
13 using System.Web;
14 using System.Web.Mvc;
15
16 namespace MVC3.Demo.Controllers
17 {
18 public class UserController : Controller
19 {
20 ////系统自动生成,可以删除
21 //public ActionResult Index()
22 //{
23 // return View();
24 //}
25
26 //登陆控制器
27 public ActionResult Login()
28 {
29 return View();
30 }
31 }
32 }

4、UserControl中包含一个方法Login执行Views/User/Login.schtml并返回。
4.调试
1、调试:MVC与传统的ASPX页面不同,不能通过“鼠标右键-->浏览”直接浏览视图。调试MVC要在“MVC3.Demo项目-->右键点击属性”设置起始页,如下图所示:
2,运行效果:按F5运行,加断点与传统的ASPX页面一样,如下图所示。
5.使用模型、视图、控制器
1.修改LoginControl代码如下:

1 /*
2 *
3 * 创建人:李林峰
4 *
5 * 时 间:2013-2-24
6 *
7 * 描 述:用户控制器
8 *
9 */
10
11 using System;
12 using System.Collections.Generic;
13 using System.Web;
14 using System.Web.Mvc;
15
16 namespace MVC3.Demo.Controllers
17 {
18 public class UserController : Controller
19 {
20 ////系统自动生成,可以删除
21 //public ActionResult Index()
22 //{
23 // return View();
24 //}
25
26 //登陆控制器
27 public ActionResult Login()
28 {
29 return View();
30 }
31
32 [HttpPost]//登陆控制器
33 public ActionResult Login(Models.LoginModel loginModel)
34 {
35 if (loginModel.UserName == "张三" && loginModel.Password == "123456")
36 Response.Write("正确!");
37 else
38 Response.Write("不正确!");
39 return View();
40 }
41 }
42 }

在LoginControl中存在两个同名方法Login,无参数的是在用户通过地址栏打开登陆窗口时的方法,加了[HttpPost]的方法是用户点击提交时处理回发时的方法。
2、MVC执行流程图(粗略):
3、本例执行流程:
- 用户在地址栏里输入http://localhost/User/Login
- 服务端路由解析地址
- 找到Contorls中UserContorl的Login方法(如果是回发则执行带有[HttpPost]的方法)
- 执行逻辑,此处为判断用户名和密码
- 返回相应的视图
版权:http://www.cnblogs.com/iamlilinfeng
无废话MVC入门教程二[第一个小Demo]的更多相关文章
- MVC入门教程二[第一个小Demo](转载)
本文目标 1.了解"模型"."视图"."控制器"的创建.调试和使用过程. 本文目录 1.创建模型 2.创建视图 3.创建控制器 4.调试 5 ...
- 无废话MVC入门教程笔记
自学mvc,看了园子里李林峰写的李林峰写的无废话MVC入门教程笔记,现在有的平时忽略的或是不太清楚的点记下来 1,Html.DropDownList //服务端写法 @{ //下拉列表的值 List& ...
- 无废话ExtJs 入门教程二十[数据交互:AJAX]
无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...
- 无废话ExtJs 入门教程二十一[继承:Extend]
无废话ExtJs 入门教程二十一[继承:Extend] extjs技术交流,欢迎加群(201926085) 在开发中,我们在使用视图组件时,经常要设置宽度,高度,标题等属性.而这些属性可以通过“继承” ...
- 无废话ExtJs 入门教程二[Hello World]
无废话ExtJs 入门教程二[Hello World] extjs技术交流,欢迎加群(201926085) 我们在学校里学习任何一门语言都是从"Hello World"开始,这里我 ...
- 无废话SharePoint入门教程二[SharePoint发展、工具及术语]
一.前言 1.由于上一篇文章的标题命名失误,此篇标题写给百度搜索”什么是SharePoint”. 2.关于什么是SharePoint,请参见本人的第一篇文章:http://www.cnblogs.co ...
- [转]无废话SharePoint入门教程二[SharePoint发展、工具及术语]
本文转自:http://www.cnblogs.com/iamlilinfeng/p/3186919.html 一.前言 1.由于上一篇文章的标题命名失误,此篇标题写给百度搜索”什么是SharePoi ...
- 无废话WCF入门教程二[WCF应用的通信过程]
一.概述 WCF能够建立一个跨平台的安全.可信赖.事务性的解决方案,是一个WebService,.Net Remoting,Enterprise Service,WSE,MSMQ的并集,有一副很经典的 ...
- 无废话MVC入门教程一[概述、环境安装、创建项目]
(转载) 本文目标 1.对MVC有初步的了解 2.能够在VS2010的基础之上安装MVC3的开发和运行环境 3.对MVC框架有概括性的认识 本文目录 1.什么是MVC 2.VS2010安装MVC3 3 ...
随机推荐
- oracle spoof用法
关于SPOOL(SPOOL是SQLPLUS的命令,不是SQL语法里面的东西.) 对于SPOOL数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句如: select taskindex|| ...
- C# Cache何时使用及使用方法
Cache 即高速缓存.那么cache是怎么样提高系统性能与运行速度呢?是不是在任何情况下用cache都能提高性能?是不是cache用的越多就越好呢?我在近 期开发的项目中有所体会,写下来当作总结也希 ...
- Java程序读取tomcat下的properties配置文件
代码如下: //找到tomcat/etc/wx文件夹 private static String getPropFolderPath() { /* Properties p = Syst ...
- Mysql优化之创建高性能索引(二)
1.索引的优点 索引可以让服务器快速地定位到表的指定位置.总结下来有三大优点: 索引大大减少了服务器需要扫描的数据量 索引可以帮助服务器避免排序和临时表 索引可以将随机I/O变为顺序I/O 2.高性能 ...
- centos安装如何选择安装包
1.根据经验,选择安装包时应该按最小化原则,即不需要的或者不确定是否需要的就不安装,这样可以最大程度上确保系统安全. 2.如果安装过程落了部分包组或者其他伙伴安装时没选,再安装后可以按如下方式补上安装 ...
- Android studio GPU Monitor :GPU Profiling needs to be enabled in the device's developer options
Android studio GPU Monitor 在真机上不能使用,提示:GPU Profiling needs to be enabled in the device's developer o ...
- 原生化:AnDevCon 2014 McVeigh 的主题演讲
作者:Jeff McVeigh(Intel) 基于(至少部分)NDK的原生安卓应用程序占现在前1000 强的 60% 以上.该增长的原因很简单:开发商需要为用户提供超卓的体验(包括灵敏的反应.与丰富的 ...
- NPOI导出多张图片到Excel
常用NPOI导出数据到excel,但没有试过如何导出图片.NPOI最大的特点就是不依赖于Excel组件,服务端不需要安装Excel.在单元格中插入图片主要是用HSSFClientAnchor对象.他有 ...
- NGINX+PHP+MYSQL服务器环境搭建
这条命令是配置vim的,请确保你能访问github wget -qO- https://raw.github.com/ma6174/vim/master/setup.sh | sh 说明有一些小问题, ...
- Windows -DOS 下Yii创建应用及出错处理
Win7下,以管理员身份运行cmd.exe 本例是在wamp环境下:切换到d盘,再切换到framework目录.............1--C:\windows\system32>d: 2-- ...