ASP.NET MVC 2 学习篇(4)- 创建一个基本的MVC 项目

ASP.NET MVC 2 学习篇(4)- 创建一个基本的MVC 项目
 
ASP.NET MVC 2 学习篇(1)
ASP.NET MVC 2 学习篇(2)
ASP.NET MVC 2 学习篇(3)
ASP.NET MVC 2 学习篇(4)- 创建一个基本的MVC 项目(附项目)
ASP.NET MVC 2 学习篇(5)- 在ASP.NET MVC 中应用Forms认证
 
本文演示如何在Visual Studio 中创建一个 ASP.NET MVC 应用程序,接着添加一个控制器和一个视图来定制应用程序。
 
此外,本文演示如何使用TDD。在向导中,将创建一个项目,并包含对MVC应用程序的单元测试。
 
在完成本向导程序之前,你需要:
(1)Visual Studio 2008 Service Pack 1或更新的版本。
(2)安装 ASP.NET MVC 2 框架。如果你已经安装了Visual Studio 2010,则 ASP.NET MVC 2 自动安装了。

关于下载 ASP.NET MVC 2 RTM 版本,请参考如下链接:
ASP.NET MVC 2 RTM版发布
 
下面是安装 ASP.NET MVC 2 RTM 的截图
 
 
 
创建一个新的MVC 项目
如下图所示,创建一个ASP.NET MVC 2 项目,项目名称为 MvcBasicWalkthrough,具体其他设置如下。

 
 
点击【确定】按钮,将弹出如下对话框。

 
选择【OK】,创建一个单元测试项目。
默认情况下,测试项目的名称为应用程序的项目名称添加Tests。不过,你也可以根据需要修改测试项目名称。另外,测试项目默认采用Visual Studio Unit Test框架。
 
点击【OK】按钮,将创建新的MVC 项目和测试项目。
 
检查MVC 项目
如下图所示,是新创建的MVC 项目。

 
关于上述目录结构的介绍,请参考如下链接:
ASP.NET MVC 2 学习篇(2
 
新创建的MVC项目是一个完整的应用程序,你可编译、运行。如下图所示,是该MVC应用程序的运行效果。

 
下面演示添加一个控制器(带一个action方法)和一个视图。
 
(1)在Solution Explorer,右击 Controllers文件夹,点击Add,接着点击Controller,弹出添加Add Controller 对话框。


在Name 文本框中,输入 MapsController。ASP.NET MVC 框架需要控制器名称以 Controller 结尾,如HomeController,GameController,MapsController等等。
 
点击【Add】按钮,创建MapsController,并添加到项目中。
 
(2)创建Action 方法
打开MapsController 类文件,替换其中的Index action 方法为 ViewMaps 方法,如下所示。
public ActionResult ViewMaps()
{
     return View();
}
 
关于添加单元测试的方法和步骤,这里忽略了。
 
(3)添加视图
首先在Views目录下,添加一个Maps 目录。
添加一个页面内容视图到 MVC 项目中。
打开 MapsController 类,右击 ViewMaps action 方法,接着点击 Add View选项。

 
 
弹出 Add View 对话框,如下图所示。

 
点击【Add】按钮,创建一个新的视图,添加到Maps目录。
 
打开ViewMaps.aspx 视图文件,并添加如下内容到Content 元素中。
<h2>My City Maps</h2>
Select map:
<select onclick="GetMap(value);">
    <option value="Seattle">Seattle, WA</option>
    <option value="LasVegas">Las Vegas, NV</option>
    <option value="SaltLake">Salt Lake City, UT</option>
    <option value="Dallas">Dallas, TX</option>
    <option value="Chicago">Chicago, IL</option>
    <option value="NewYork">New York, NY</option>
    <option value="Rio">Rio de Janeiro, Brazil</option>
    <option value="Paris">Paris, France</option>
    <option value="Naples">Naples, Italy</option>
    <option value="Keta">Keta, Ghana</option>
    <option value="Beijing">Beijing, China</option>
    <option value="Sydney">Sydney, Australia</option>
</select>
<br />
<br />
<div id='earthMap' style="position:relative; width:400px; height:400px;">
</div>
<script charset="UTF-8" type="text/javascript"
    src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2&mkt=en-us">
</script>
<script type="text/javascript">
    var map = null;
    var mapID = '';
 
    function GetMap(mapID)
    {
        switch (mapID)
        {
            case 'Seattle':
                map = new VEMap('earthMap');
                map.LoadMap(new VELatLong(47.6, -122.33), 10 ,'i', true);
                break;
            case 'LasVegas':
                map = new VEMap('earthMap');
                map.LoadMap(new VELatLong(36.17, -115.14), 10 ,'i' ,true);
                break;
            case 'SaltLake':
                map = new VEMap('earthMap');
                map.LoadMap(new VELatLong(40.75, -111.89), 10 ,'i' ,true);
                break;
            case 'Dallas':
                map = new VEMap('earthMap');
                map.LoadMap(new VELatLong(32.78, -96.8), 10 ,'i' ,true);
                break;
            case 'Chicago':
                map = new VEMap('earthMap');
                map.LoadMap(new VELatLong(41.88, -87.62), 10 ,'i' ,true);
                break;
            case 'NewYork':
                map = new VEMap('earthMap');
                map.LoadMap(new VELatLong(40.7, -74), 10 ,'i' ,true);
                break;
            case 'Rio':
                map = new VEMap('earthMap');
                map.LoadMap(new VELatLong(-22.91, -43.18), 10 ,'i' ,true);
                break;
            case 'Paris':
                map = new VEMap('earthMap');
                map.LoadMap(new VELatLong(48.87, 2.33), 10 ,'i' ,true);
                break;
            case 'Naples':
                map = new VEMap('earthMap');
                map.LoadMap(new VELatLong(40.83, 14.25), 10 ,'i' ,true);
                break;
            case 'Keta':
                map = new VEMap('earthMap');
                map.LoadMap(new VELatLong(5.92, 0.983), 10 ,'i' ,true);
                break;
            case 'Beijing':
                map = new VEMap('earthMap');
                map.LoadMap(new VELatLong(39.91, 116.39), 10 ,'i' ,true);
                break;
            case 'Sydney':
                map = new VEMap('earthMap');
                map.LoadMap(new VELatLong(-33.86, 151.21), 10 ,'i' ,true);
         }
    }  
</script>
 
(4)添加一个Tab菜单到Master页面
打开Shared文件夹中的Site.master 文件,添加如下代码到 Index 和 About Us 标签页之间。
<li><%= Html.ActionLink("My City Maps", "ViewMaps", "Maps")%></li>
 
ActionLink 辅助方法连接到一个action 方法,接收如下参数:链接文本,action方法名称,和控制器名称。
 
(5)运行范例程序
点击My City Maps 标签页,显示My City Maps 页面,如下图所示。

 
ASP.NET MVC 2 系列学习文章是编译自MSDN上的相关文章,本系列文章由 EntLib.com 电子商务团队提供,所有转贴务必保留链接(http://www.entlib.com/ )
 
MSDN原文链接:
http://msdn.microsoft.com/en-us/library/dd410597(VS.100).aspx
 
posted on 2010-03-19 09:54  EntLib  阅读(1644)  评论(0编辑  收藏  举报