现有ASP.NET MVC框架应用巧妙移植到手机


  客户对产品质量非常满意,因此在项目完成后又给我们另外一个订单,即部署客户程序到Windows智能手机设备上。但是我们项目团队成员以前都没有这种开发经验。我们的计划是通过最小限度的修改现有程序代码,使其可以运行在Windo智能手机上。

       移动设备Web应用工具箱(WebApplicationToolkitforMobileDevices)
  我们选择了微软移动设备Web应用开发工具箱作为解决方案。使用这个免费的工具,可以轻松将基于MVC框架的Web应用扩展到移动设备上。

下载地址:
  http://code.msdn.microsoft.com/WebAppToolkitMobile/Release/ProjectReleases.ASPx?ReleaseId=3914
  该移动应用开发工具箱所需的环境要求是:
  1、安装微软.NETFramework3.5SP1。
  2、VisualStudio2008专业版或更高版本。你也可以下载免费的微软VisualWebDeveloper2008Express版。
  3、如果你的操作系统是WindowsXP,则需要安装同步软件MicrosoftActiveSync,以实现开发环境和设备模拟器之间的同步。
  4、ASP.NETMVC框架,该框架也是免费的,你可以从MSDN或CodePlex上下载。
  5、WindowsMobileSDK6.0或更高版本。默认情况下,该SDK没有模拟器映像文件,你可从以下地址下载:
  http://www.microsoft.com/downloads/details.ASPx?FamilyID=1A7A6B52-F89E-4354-84CE-5D19C204498A&displaylang=en

      在安装了Web应用开发工具箱后,它将在你指定的位置创建一个名为WebAppToolkitMobile的文件夹。打开WebAppToolkitMobile/VisualStudioTemplates文件夹,双击MobileWebApplication.vsi文件,将在VS2008中创建一个新MobileApplication模板项目。打开你的VS2008,并从“我的模板”分类中选择MobileWebApplication项目模板,并将你的项目命名为“TestMobileWebApplication”。另外根据向导要求增加一个单元测试项目。


  看下解决方案浏览器,它将有三个不同的项目。第一个项目名为“MobileCapableViewEngie”,它是一个类库型项目,其输出为一个主项目引用的程序集(.dll文件)。在运行时中,这个程序集将根据浏览器和设备类型来决定展现哪一个视图。


  举例来说,如果你想在你的ASP.NET应用中显示一个员工列表,而且你也希望为手机应用浏览器创建一个相同的列表,那么你需要创建两个不同的视图。其中一个视图供IE浏览器使用,而另一个则是为手机网络浏览器所准备。你还可以为手机浏览器创建定制化的视图,因为手机和PDA显示屏可能非常小。在多数情况下,开发者将为手机应用创建定制化的视图。MobileCapableViewEngine类的ViewEngineResult函数确定运行时展现哪一个视图。

public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)          {              ViewEngineResult result = null;              HttpRequestBase request = controllerContext.HttpContext.Request;               if (request.Browser.IsMobileDevice)              {                  string mobileViewName = string.Empty;                   mobileViewName = string.Format(                                          CultureInfo.InvariantCulture,                                          "Mobile/{0}/{1}",                                          this.RetrieveDeviceFolderName(request.Browser.Browser),                                          viewName);                   result = this.ResolveView(controllerContext, mobileViewName, masterName, useCache);                   if (result == null || result.View == null)                  {                      mobileViewName = string.Format(                                              CultureInfo.InvariantCulture,                                              "Mobile/{0}",                                              viewName);                       result = this.ResolveView(controllerContext, mobileViewName, masterName, useCache);                  }              }                            if (result == null || result.View == null)              {                  result = this.ResolveView(controllerContext, viewName, masterName, useCache);              }               return result;          }           protected virtual ViewEngineResult ResolveView(ControllerContext controllerContext, string           viewName, string masterName, bool useCache)          {              return base.FindView(controllerContext, viewName, masterName, useCache);          } 

NET技术现有ASP.NET MVC框架应用巧妙移植到手机,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。