代码改变世界

Asp.Net MVC---Walkthrough

2008-05-30 01:05  Jun1st  阅读(2081)  评论(2编辑  收藏  举报

 

Asp.Net MVC---Walkthrough

 

 

在上一篇关于Asp.Net MVC的文章中,对Asp.Net MVC作了一个High level的介绍,有兴趣的园友可以看一下这里。概念性的东西讲完了,现在该是动手写点Code的时候了,用原版技术书上的话说就是:Time to get your hands dirty。(文章写到一半,Asp.Net MVC Preview3发布了,所以,本文的的Project也相应的更新Preview 3的了)

 

创建一个新项目

通过File->New Project->Asp.Net MVC Web Application创建一个新项目:AjaxInMVC。创建Web Application的时候,还会创建一个Test项目,通过这个Test项目就可以实现了TDD了。创建完成的新项目的结构如图:

Solution.jpg
可以看到,生成的项目文件夹已经有了
Controllers, ModelsViews。此外,Views中还包括一个Shared 这个文件夹中存放可以公共访问的页面文件等,如master文件。而在Content中,用来存放诸如javascriptstylesheet之类的文件。

 

URL Routing

打开Glocal.ascx文件,可以看到在Application_Start这个系统函数中注册了Asp.Net MVCRoute规则:

Glocal.jpg
这是在
Preview 3中的新的Routing规则,相比之Preview 2,有了两个新的方法:

l  IgnoreRoute: MVCRouting System将不会处理IgnoreRoute中的URL Pattern

l  MapRoute: 把一个新的Routing规则添加到Routes Collection中,而其中的“new { controller = "Home", action = "Index", id = "" }“是此Routing的默认的ControllerAction

这时的程序是完全可以运行的,只不过几乎什么都没有J

简单的Sample: Lunch Management

先看一下效果图吧:

View1.jpg
HTML
代码:

Code


Asp.Net MVC
使得我们又重新拿回了对页面控件的控制权,但是随之而来的一个副作用就是失去了很多在传统的Asp.net中丰富的控件。我们必须写更多的代码,但是我们拥有了更高的灵活性。

解释一下最下面那句Html.ActionLink 它使用了.net中最新的Lamda表达式,这么做的好处是所调用的ActionNewUser,是必须要存在的,否则编译时就会出错。而这正式我们所希望的,较之于等到程序运行时才出错。

Controller主要代码:

private LunchDataContext lunchDC = new LunchDataContext();

 

        public ActionResult Index()

        {

            ViewData["Users"] = lunchDC.GetAllUsers();

            return View("Index");

      }

到目前位置,Asp.Net MVC的每一个ReleaseController的变化都不小,Preview 2取消了作为Action需要的属性,而默认设置所有的public方法为Action。这一次,Action方法不仅有返回值ActionResult, 而且从controllerview的方法也变为了View

LunchDataContext是一个LINQ to SQL类,并且通过partial类这一特性添加了一些简单的方法(注意:添加一个独立的类文件,而不是修改IDE生成的类文件,这就是partial的好处之一)

 

这个页面的功能很简单,添加、显示。但是已经基本上完成View->Controller->Model->Controller->View一个轮回了。之后将添加更多的功能,并希望能实现Ajax

代码目前写得还是有点乱,等之后实现更多的功能和Refector之后再发了^_^