第一个小Demo(转载)

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

时间: 2024-11-07 17:33:45

第一个小Demo(转载)的相关文章

javascript 跟随鼠标移动的提示框的一个小demo

下面提供一种跟随鼠标移动的提示框的思路,方便在以后工作中应用,主要是应用到鼠标移动产生的数值来进行移动提示框的定位... CSS代码   .box{height:100px;width:100px;background:orange;position:relative;margin:40px;} .move{height:20px;width:20px;background:red;position:absolute;left:0px;top:0px;display:none;} HTML代码

jQuery 中 ajax 提交数据应用的一个小demo

举一个jquery中ajax的应用小 demo 便于以后的更多项目拓展 ,这里要注意的是保存的文件名问题 ... ajax02.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="form&qu

jQuery 中 ajax 请求数据应用的一个小demo

举一个jquery中ajax的应用小 demo 便于以后的更多项目拓展 ,这里要注意的是保存的文件名和文件图片路径问题 ... ajax01.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> ajax小例子 </title> </head> <body> <!--

模仿京东顶部搜索条效果制作的一个小demo

最近模仿京东顶部搜索条效果制作的一个小demo,特贴到这里,今后如果有用到可以参考一下,代码如下 1 #define kScreenWidth [UIScreen mainScreen].bounds.size.width 2 #define kScreenHeight [UIScreen mainScreen].bounds.size.height 3 4 #import "mainViewController.h" 5 6 @interface mainViewController

一个小demo的开发日记(〇)

在大概两周(三周?)前,出于某些原因(w)我做了个小demo.(虽然因为各种各样的原因导致做它的时间只有一周多了…所以它还远没有完成OTL) 在目前看来,它主要的亮点啊啥的之类的东西大概可以用下面的(g)视(i)频(f)来代表w: 大概就是一个树木生长的过程,以及一个日夜交替(晚上的星星被gif几乎快压没了). (实际上才没这么点东西!但是没做完什么的TAT) 所用工具是Unity,不过为了性能全写的是Unlit Shader(按我的理解应该是不参与Unity5.x的GI(全局光照).这个Unl

Cocos实战篇[3.4]——仿COC的一个小Demo总结

[唠叨] 今天结束了本学期任务最为艰巨的项目实训课程,由于项目组里其他成员基本都已经找到实习了,然后他们都去实习了.只留下我和一个小伙伴在一起搞项目实训的小游戏.经过一个月与小伙伴的配合开发,做了一个勉强可以玩的一个小游戏demo,因为平时其他课程也比较繁重,所以游戏做得非常烂~(>_<)~. 我们本来打算做一款类似COC.海盗奇兵.口袋侏罗纪.城堡争霸的城战类的单机Demo.结果--哎说多了都是泪啊,经验不足,吸取教训了. [经验教训] 由于时间比较紧张,加上自身也没有大项目开发的经验,所以

一周一个小demo — 前端后台的交互实例

这一周呢,本K在大神的指导下,完成了一个利用ajax与php文件上传处理相结合的一个留言板功能的小实例,下面就让本K来带大家瞅瞅如何实现这一种功能. 一.界面概览 首先我们来看一下这个小demo的具体效果. 这个demo中,主要包括了三个步骤,也分别对应了三个功能,分别是注册,登录与留言板功能.而这三个功能基本都借助了前后台交互的几种技术,下面,本K就给大家分别展示一下这三个功能实现的代码. 二.功能实现 1.注册功能与登录功能 1.1 代码展示 1.1.1 注册功能 (1)前段部分 <!DOC

原生JS写了一个小demo,根据输入的数字生成不同背景颜色的小方块儿~

昨天练习写了这个小demo,个人觉得通过设置定位元素left和top的值,来实现换行的功能,这种方法很巧妙~ 另外,如下代码中的随机颜色的获取,还请各位前辈多多指教:需要改进的地方:或者有没有更好的方法. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style type="text

一个小demo的开发日记(二)

时间倒退回2016年4月10日,这个工程刚开始的时候 —— 就不说做这个的原因和为什么要做个这个了.嗯…感觉好蠢. 一上来什么都没有.我决定把注意力先放到重点 —— 场景最中间那棵树上面. 在这个时候,我手里有一份Ogre(另一个游戏引擎,开源,无GUI)上的分形树.至于分形树是个啥,就先当成一个可以画出三维的树的程序好了. 然而我觉得用Unity能让我更快的完成这个东西,毕竟时间紧迫,离deadline只剩12天了.而现在我手上什么都没有,而且对Unity一无所知,简直…太糟了w 所以第一件事