实战ASP.NET MVC 1.0 #1,我的第一支MVC程序,展现所有数据(主细表的Master)
http://www.dotblogs.com.tw/mis2000lab/archive/2009/08/10/mvc_1_list_all.aspx
看了再多的理论,都不如自己动动手
亲自写一支程序,从 "做中学",才是王道!
微软的官方网站上(http://www.asp.net/mvc/),就有很多范例了,
这次的范例,是从 http://www.asp.net/learn/mvc/tutorial-21-vb.aspx 这个范例小改而来。
如果以下说明,尚有不详细的地方,建议您以原厂文件为准。
=======================================================================
以下的范例,是服务本书读者,因此采用与本书的 test Table相同的作法。
在学习这个范例之前,请您务必学习过 ADO.NET Entity,才能衔接下去。
请看:[习题]用ADO.NETEntity Framework作一个主细表(Master-Detail)范例
=======================================================================
第一,环境设定。
需要安装 .NET 3.5与 VS 2008,并且双双升级到 SP1。
MVC大多是自己动手写程序,所以开发工具提供的帮助并不大。使用VWD Express版也可以做得到。
最后,请到微软的官方网站上(http://www.asp.net/mvc/),下载 ASP.NET MVC 1.0来安装 (档案很小,才2MB)
第二,我们将使用书上的 test数据库来作为范例。
简体中文版,请看「ASP.NET案例精编(清华大学出版社)」
第三,打开VS 2008,新增 "专案"。
切记,请选「Web」分类底下的「ASP.NET MVC Web Application」 这是 MVC 1.0版喔
第四,一个MVC专案会是底下的样子
我们以前习惯的「网页(画面)」,目前都放在 /Views目录底下,扩展名仍然是 .aspx
/Controllers目录底下,会放置主要的程序。
/Content目录底下,则是放置一些共享的 CSS样式表。
我个人(不负责任)的感觉 ----
MVC式的开发方式,比较像是以前传统的 ASP/PHP/JSP开发方法,开发工具能提供的辅助,变得很少。
「所见即所得」的快速开发,似乎不太适合在 MVC上面实现。
传统html码 / CSS /JavaScript等等的熟悉度,再一次变得很重要啰。
对于 Class的撰写、数据库的操作、自己动手写程序....似乎又回复到原本的样子。
想要在画面上拉一拉,进行快速开发(这些初学者招数)在此都不管用啰! 我想,再也不会有人抱怨「ASP.NET好简单喔!拉一拉组件就会跑了」
第五,我们新增一个项目,实作 ADO.NET Entity。
这部份我不在赘述了。请看上一篇文章([习题]用ADO.NETEntity Framework作一个主细表(Master-Detail)范例 )的说明。
各位只需要实作到「 .edmx」档案出现即可,记得存盘喔。
第六,开始写程序。
请到 /Controller目录下,打开 HomeController.vb档案
底下只有两列程序,都是我们自己动手写上的
<HandleError()> _
PublicClass HomeController
Inherits System.Web.Mvc.Controller
Private_test_db As New testEntities() '==这行程序是自己撰写的==
'==========================================================
'== 前两个Function,是预设的MVC样板
Function Index() As ActionResult
'-- Index()是 HomeController 预设的Function
ViewData("Message")= "Welcome to ASP.NET MVC!"
Return View(_test_db.test.ToList()) '==这行程序是自己撰写的==
End Function
End Class
批注:
- testEntities()是我们作 ADO.NET Entity的时候,自己命名的,请看第五步骤。
- .ToList()也不是我们写好的程序,我们是呼叫现成的来用。
第七,HTML画面设计
又回到以前 ASP的时代,我们把程序与html卷标混写在一起啰......
这就是 Inline Code......
01 <%@ Page Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
02
03 <asp:Content ID="indexTitle" ContentPlaceHolderID="TitleContent" runat="server">
04 Home Page
05 </asp:Content>
06
07 <asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
08 <h2><%= Html.Encode(ViewData("Message")) %></h2>
09 <p>
10 To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NETMVC Website">http://asp.net/mvc</a>.
11 </p>
12
13 <!-- *******以下是自己写的程序******* -->
14 <h2>Index -- 资料列表</h2>
15
16 <p>
17 <!-- 自己写的超级链接 -->
18 <%=Html.ActionLink("Create New", "Create")%>
19 </p>
20
21 <table>
22 <tr>
23 <th></th>
24 <th>
25 Id(编号)
26 </th>
27 <th>
28 Title(标题)
29 </th>
30 <th>
31 Test_Time(日期)
32 </th>
33 <th>
34 Summary(摘要)
35 </th>
36 </tr>
37
38 <% For Each item In Model%>
39
40 <tr>
41 <td>
42 <!-- 自己写的超级链接 -->
43 <%=Html.ActionLink("Edit", "Edit", New With {.id = item.Id})%> |
44
45 <%=Html.ActionLink("Details", "Details", New With {.id = item.Id})%>
46 </td>
47 <td>
48 <%= Html.Encode(item.Id) %>
49 </td>
50 <td>
51 <%= Html.Encode(item.Title) %>
52 </td>
53 <td>
54 <%=Html.Encode(String.Format("{0:d}", item.test_time))%>
55 </td>
56 <td>
57 <%=Html.Encode(item.summary)%>
58 </td>
59 </tr>
60
61 <% Next%>
62 </table>
63
64 </asp:Content>
第八,完成了,且看程序的执行成果。
绕了这一圈,做的范例又是我们很熟悉的 Master-Detail程序。
各位对于 MVC的感觉是如何?
我想:以传统的 Web Form方式来作这功能,很多人都可以在短短 15分钟搞定。
说穿了,不过是 MasterPage + Login控件 + GridView(数据删除、修改、展现)/ SqlDataSource
但是,MVC的强弱,不该用这么小的程序来判别高低。
回头再看看这文章(ASP.NET MVC与Web From的使用时机?),
大家一定会发现 Will与小朱两位前辈的话,很有道理!!
2010/5/26补充 :
上述文章,是在 VS 2008 SP1上面,搭配 ASP.NET MVC 1.0 Framework。
这部分的操作流程,比较细致。
我担心网页上说不清楚,各位可以参考我的新书
ASP.NET专题实务(II)-- 范例集与 4.0新功能(文魁出版)
随着 VS 2010与 .NET 4.0上市,内建 MVC 2.0。
书本与先前的范例,大致OK。
但有些细节需要修改。修正后的范例请由此下载
实战ASP.NET MVC #4,将范例修改成MVC 2.0版
我的网站,关于 ASP.NET MVC文章都收录在此,
实战ASP.NET MVC 1.0 #1,我的第一支MVC程序,展现所有数据(主细表的Master) (2010-11-02 13:09)
实战ASP.NET MVC 1.0 #2,主细表(Master-Detail)的Detail部份 (2010-11-02 13:14)
实战ASP.NET MVC 1.0 #3,新增一笔资料(Create / Add)(2010-11-02 13:20)
实战ASP.NET MVC #4,将范例修改成MVC 2.0版(Onlyfor VS 2010) (2010-11-02 13:25)
实战ASP.NETMVC 2.0 #5,删除一笔记录(2010-11-02 13:30)
....................................................................................................寄信给我 mis2000lab (at)雅虎.com.台湾 ........
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)