在本文中,将探讨如何升级现有的ASP.NET项目,以满足当前的HTML5响应式设计需求,并使其运行速度极快,方法是消除页面上的ViewState,从而在客户端实现轻量化,并仅通过服务(Web API)实现与后端的所有交互。
本文分为两部分。在第一部分中,将创建一个使用Bootstrap设计布局的ASP.NETWeb Forms移动优先应用程序,使用Web API作为服务层,并使用JSON格式以提高浏览器的可理解性。这样,可以消除大部分代码后置逻辑,并实现显著的性能提升。
首先,在ASP.NET中创建一个新的Visual C#项目,并选择“Empty Web Application”。然后,创建一个Global.asax文件,稍后将更新这个文件。接下来,通过NuGet包管理器安装jQuery和Bootstrap。这将在项目中创建三个新文件夹:“Content”用于CSS,“fonts”和“Scripts”用于JavaScript。
为了优化Web资源,将使用捆绑技术。首先,创建一个名为“App_Start”的新文件夹,并在其中添加一个名为“BundleConfig.cs”的新类,该类包含一个静态的RegisterBundles方法。每个脚本或样式捆绑都位于从根目录指定的虚拟路径下。
要修复BundleCollection丢失的引用,需要从NuGet安装“Microsoft.AspNet.Web.Optimization”包。然后,在BundleConfig.cs文件中添加“System.Web.Optimization;”命名空间。将现有的样式和脚本标签替换为指向虚拟路径的捆绑脚本。
接下来,需要在Global.asax文件的Application_Start方法中注册捆绑。
首先,需要在项目根目录下创建一个名为“Controller”的新文件夹。默认情况下,Web Forms没有Web API功能,需要依赖NuGet包管理器来搜索并安装“MicrosoftASP.NETWeb API 2.2”包。
然后,在Controller文件夹中添加一个新的Web API控制器类,并创建一个名为“ProductController”的类。将添加一个新的动作方法“GetHelloWorld”来测试API。
public class ProductController : ApiController
{
[HttpGet]
[ActionName("GetHelloWorld")]
public string GetHelloWorld()
{
ArrayList al = new ArrayList {
"Hello",
"World",
"From",
"Sample",
"Application"
};
return JsonConvert.SerializeObject(al);
}
}
为了能够访问API方法,需要设置适当的路由机制。在App_Start文件夹中添加一个名为“WebApiConfig.cs”的新类,并添加以下代码:
public static void Register(HttpConfiguration config)
{
config.EnableCors();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{Action}/{id}",
defaults: new { Controller = "Product", Action = "GetHelloWorld", id = RouteParameter.Optional }
);
}
最后,在Global.asax文件的Application_Start方法中注册API路由。