写这篇文章其实心里是比较忐忑的,确实Asp.Net MVC框架出来了很长时间了,我这篇文章稍有过时之嫌。不过本着分享学习的态度,还是写一写吧。MVC框架的文章园子里已经很多了,想专题中的重典、老赵、子秋、老代等人都写过,我一直想找一个不同的切入点,于是就产生了从一个小例子写起的想法,毕竟一个复杂的应用是由N多相对简单的应用组成的。废话不多说,进入正题。
首先,建立一个数据库Test,建立一张表UserInfo,字段如下:
然后,很自然打开vs2008,建立一个Asp.Net MVC项目:
接下来,在项目中新建一个Linq to Sql类,把建立的表拖进来,起个名字,我是用的Test.dbml。对于MVC来说,最基本的就是三件事:1、配置Routing;2、创建View;3、创建Controller,如果有的朋友对这几个还是不太明白的话,建议去看下重典的教程http://www.cnblogs.com/chsword/archive/2008/03/10/dotnetmvcframework.html。
下一步,我们就开始一个一个添加,首先在Views里创建几个View:
对于第一讲来说,我们就用到了Index.aspx和Register.aspx,后面我们会陆续的完善,然后创建Controller:
最后配置Routing,这里的规则就比较简单了:


1

2



3

4

5

6

7

8



9

10

现在我们完成了三件最基本的工作,接下来就要在View和Controller中写点儿东西了,为了简单起见,Index.aspx中就只有两个链接:

2

3

4

5

6

其中Html.ActionLink中的两个参数,第一个是超链接显示出来的文本,第二个则是提交到这个Controller的哪个Action中,再写一个注册页面,同样就是力求简单:


1

2

3

4



5

6

7

8



9

10

这个ViewData["Message"]是为了显示一些提示信息用的,当然,以后替换成Ajax是必然的。下一步,在Services文件夹中建立接口IUerService,然后写一个实现类UserService,里面写的无外乎就是关于User的添加和一些简单的验证,就以添加来说:

2



3

4

5

这些都准备好以后,我们只要写Controller就可以了:


1

2



3

4



5

6



7

8

9

10

11

12

13

14

15



16

17

18

19

20

写完之后,运行下,我们的第一个Asp.Net MVC的注册就完成了,后面我会对这个简单的应用做进一步的修改,希望对刚接触MVC的朋友有所帮助,也希望大家在评论中多发表修改意见。那么今天就先到这里:)
代码在这里/Files/1231net/FirstMvc.rar