[转载]ASP.NET MVC3实践–Movie,一个简单的MVC3应用 – 午夜凋零 – 博客园.
作为本系列的第一个应用,本文选取了ASP.NET上的一个tutorial project,“movie list”作为例子,由于本系列面向的是对ASP.NET以及mvc开发有一定基础的读者,除razor相关内容外,均从简介绍。
1、创建工程
选择C#的Web项目,创建一个MVC3项目,如图1.,我们使用第二个模板,并确保其中的View Engine为Razor,并勾选HTML5语法标签。
图1.
创建好项目之后,Project Layout如图2所示,请记住这个Layout,这是一个典型的MVC3项目的布局。
图2.
对于使用过MVC2的读者来说,相信对_ViewStart和_Layout两个文件不会陌生,关于ASP.NET MVC框架的其他细节,请参考:
MSDN:MVC3 MSDN上的MVC3参考,建议快速浏览
MSDN:Razor Razor的整体介绍,建议未使用过的读者详细了解下
ASP.NET MVC3实践–入门
2、观察和修改HomeController
打开HomeController.cs,我们修改其中的ViewBag.Message内容,如图3所示。这里我们将第一次接触到Razor,并 且一上来就是非常强大的一个内容,ViewBag。这是一个动态类型,可以动态的设置一个具有get/set方法的属性,简单的说就是,你可以给 ViewBag添加你想要的信息,比如ViewBag.LoveMessage、ViewBag.Eureka等等。这里我们给ViewBag附加一个 Eureka属性(不要问我Eureka是什么……⊙﹏⊙b),然后给其赋值为:“My Movie List”。
图3.
注意,我们这里使用的是MVC模板提供的HomeController,我们修改了模板预先设的ViewBag.Message,由于 ViewBag.Message在Index的View中被应用了,因此,我们需要修改View中的引用,如图4所示。这里我们见到了Razor的有一个 及其方便的功能,“@”符号,由“@”引导的语句,Razor引擎会将其解析为C#代码,“@{//code block}”则可以支持代码段。作为尖括号写到吐的Web开发人员,这无疑又是一个非常好的改进。
图4.
好了,这时候,让我们编译项目,然后看看我们的第一个MVC3应用吧,run it!如图5所示
图5.
3、创建一个我们自己的Controller并为其View。
细心的读者可能会发现,我们前面的HomeController中,注释掉了About方法。是的,在这一步开始之前,你需要注释掉 HomeController中的About的方法,并删除View中Home目录下的About.cshtml。好的,我们开始创建 Controller,右键单击Controller文件夹,选择添加->Controller,创建一个名为About的Controller, 这里使用Empty模板,我们暂时还不需要它做更多的事情。
图6.
之后我们将得到一个AboutController类,如图7所示。有了Controller,我们自然会想到View(注意,这里我们不需要 About做更多的事,所以我们不需要Model),要添加View,在Visual Studio中是一件再简单不过的事情了,右键点击方法,选择Add View,Visual Studio就会为我们生成对应方法的View了。
图7.
我们在生成的View中稍作显示内容的修改,如图8所示
图8.
这里再次强调,我们使用的事Visual Studio提供的项目模板,我们删除了HomeController中的About方法及其View,但是还没有修改About的链接,注意,模板中在 Layout里面有About的链接。我们修改原ActionLink的ActionName和Controller为我们的 AboutController的Index方法和新的Controller名字,About。
图9.
好的,修改完成,我们来看看我们的成果吧。
图10.
4、使用EntityFramework的Code First创建一个Model,并为其创建Controller和View。
再次强调,本文面向有一定ASP.NET基础的读者,如果你有Hibernate的变成经验,也可以。关于Code First,本文以及后续文章都不会做详细介绍,但是会有大量例子。所谓Code First,义如其名,先有Code在有其他,换句话说,先写了数据实体的类,然后数据库什么的,EntityFramework会为我们搞定。Code First属于EntityFramework中的一种模式,其他的有Schema First和Model First。
首先,在Models文件夹中添加一个类,命名为Movie,如图11所示
图11.
Tips:许多Visual Studio的使用者并不熟悉Visual Studio的操作细节,比如这里我们要为Moive创建5个属性,在创建每个属性前,我们只需要键入“prop”然后按两次tab建,即可生成一行public属性模板。
然后,我们创建一个Context,最简单的Code First,我们的数据库就建好了!
图12.
再有了数据的code之后,我们只需要在根目录)的web.config中添加connectionString,后台的数据处理EntityFramwork会为我们完成(相信有Hibernate开发经验的读者很容易理解这一点)
需要注意的是,connectionString需要设置name属性为之前创建的Context属性:
Model已经有了,MVC还差V和C,这里我们不在手动添加V和C了,而是使用Visual Studio的强大自动化功能,右键单击Controllers文件夹,添加一个Controller,这里,如图13所示。
Template:具有read/write/view方法的Controller
Model class:Movie
Data context class:MovieDbContext
并确保使用Razor引擎。
图13.
然后点击Add,Visual Studio便会为我们自动创建Movie这个Model的Controller和View了。Movies的代码如代码段所示,可以看到,出了 Index方法,Visual Studio还自动创建了数个其他的方法,并且,其中部分还有GET和POST两个版本。
关于MVC的细节,这里不做详述。接下来,我们看一看系统为我们创建了那些View,如图14所示,
图14.
这里我们来看其中一个View的内容的一段。
图15.
关于这段代码,细心的读者会发现,这简直太犀利了,Html和C# Code竟然如此完美的无缝结合在一起!关于更多的细节,我将在后续文章中为大家带来。
好的,最后,我们来看看我们的最终成果吧(这里,我使用Create New创建了了两条栏目)。
图16.
这就是Razor,这就是ASP.NET MVC3!
为了避免兼容性问题,这里只提供改动了的文件,如需使用,只需按本文前面所述的步骤创建工程,然后将包中内容覆盖之即可,后续文章的下载也同样如此。