[转载]ASP.NET MVC3实践--一个简单的MVC3应用

[转载]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属性:

<add name="MovieDbContext"
connectionString="data source=.\SQLexpress;integrated security=SSPI;database=Movie"
providerName="System.Data.SQLClient"/>

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!


本文涉及到的代码下载

为了避免兼容性问题,这里只提供改动了的文件,如需使用,只需按本文前面所述的步骤创建工程,然后将包中内容覆盖之即可,后续文章的下载也同样如此。

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏