ASP.NET MVC 3与Google地图集成指南

在本文中,将探讨如何将ASP.NET MVC3与Google地图API相结合,创建一个简单的地图应用程序。将使用Visual Studio 2010和Razor视图引擎来实现这一目标。

尽管本文将简要介绍MVC框架的一些概念,但大部分内容将假设已经熟悉该模式。以下是需要了解的一些关键点:

  • Visual Studio 2010或免费工具
  • MVC 3 RTM版本
  • 一些美味的饼干(比喻,指轻松愉快的学习过程)

Razor视图引擎

Razor是ASP.NET网页的新渲染框架的一部分。与传统的ASP.NET渲染引擎不同,Razor使用更简洁的隐式语法来确定代码块的开始和结束。

例如,在传统的ASP.NET渲染器中,可能会看到这样的代码:

<ul> <% foreach (var userTicket in Model) { %> <li> <%: userTicket.Value %> </li> <% } %> </ul>

而在Razor中,代码将更类似于:

<ul> @foreach (var userTicket in Model) { <li> @userTicket.Value </li> } </ul>

Razor还提供了许多其他功能,如Sections、Layouts和Razor特定的帮助器。本文将从高层次上探讨这些特性。

MVC 3工具变化

随着新语法的引入,模板的渲染方式也发生了变化。工具已经相应地更新,因此在从控制器生成视图时看到的视图源代码更加清晰。

例如,对于非强类型视图,只需要这样做:

@model IEnumerable<RazorMaps.Models.StringModel> @{ ViewBag.Title = ""; }

将在本文的剩余部分更详细地探讨这些特性。

开始之前

如果对如何运行更感兴趣而不是如何运行,请跳到下一节。但是,这里有几个要点需要指出,以便能够跟上。

Razor对MVC应用程序的整体流程影响很小。考虑当对应用程序发出请求时发生的情况:

  • 接收应用程序的第一个请求
  • 执行路由
  • 创建MVC请求处理程序
  • 创建控制器
  • 执行控制器
  • 调用动作
  • 执行结果

基本上,Razor在“执行结果”阶段介入。与使用MasterPages作为模板不同,Razor使用Layouts。Layouts与语法一样,是一种更简单、更清晰的方式来为网页组合模板。

创建一个简单的首页

需要设置一个视图,以便有东西可以查看。基础项目不包括将要使用的控制器或视图,所以将从这里开始。

右键单击“控制器”,选择“添加 > 控制器”,并命名为“HomeController”。得到了一个基本的控制器,并且首个ActionResult(将调用渲染首页)的代码是免费的:

public ActionResult Index() { return View(); }

接下来,右键单击“Index”方法中的任何位置,并从上下文菜单中选择“添加视图”。如果视图名称是“Index”,则不需要更改任何其他内容。使用的是Razor视图引擎,已经在_viewstart中指定了布局。

按F5键查看作品!

集成Google地图

需要做几件事情来启动基本的、无装饰的地图。尽管是从Google Maps Javascript API页面上的简单教程开始的,但会尽量将其MVC化,并查看Razor视图引擎的一些特性。

知道需要将Google Maps脚本添加到页面,从教程中看到,还需要一些样式。因为在Razor中使用布局,并且不希望在创建的每个页面上都有这些样式,将利用Razor部分在布局中。

打开_Layout.cshtml文件,并在文档的部分添加以下代码:

<head> ... @RenderSection("Scripts", false) <style type="text/css"> @RenderSection("Styles", false) </style> ... </head>

在这里添加了两个可选的RenderSections。这与在使用母版页时创建内容部分非常相似。

接下来,回到index.cshtml文件,以便可以添加一些有趣的部分来加载地图。此时,值得拿一块饼干。

完善页面

在文件的顶部,将想要添加以下代码:

@{ ViewBag.Title = "MVC 3和Google地图"; } @section Scripts { <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> } @section Styles { html { height: 100% } body { height: 100%; margin: 0px; padding: 0px } #map_canvas { height: 80% } }

ViewBag是一个在运行时评估的动态表达式。"Title"属性用@ViewBag.Title表达式填充到布局模板中。

接下来,有两个部分;第一个将地图脚本添加到页面,第二个应用并指定需要的样式以正确渲染地图。

页面的其余部分包括:

  • 一个div元素(用于托管地图)
  • 一个初始化函数,用于设置地图
  • 一个jQuery快捷方式,在页面准备好时调用初始化函数

以下是代码:

<h2> Hello, Google Maps </h2> <div id="map_canvas" style="width:80%; height:80%"> </div> <script type="text/javascript"> function initialize() { var latlng = new google.maps.LatLng(40.716948, -74.003563); var options = { zoom: 14, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP}; var map = new google.maps.Map(document.getElementById("map_canvas"), options); } $(function() { initialize(); }); </script>

就是这样!再次按F5键,地图加载。

如果对ASP.NET MVC有很好的掌握,并且理解MasterPages,那么切换到Razor引擎和模板将会是轻松和令人耳目一新的。通过Razor部分渲染每页代码是直接的,并且保持模板清晰。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485