VisualStudio2005的那些事儿

【独家特稿】2010年4月12日是微软Visual Studio 2010正式版发布的日子。作为Visual Studio的用户,您是否还记得自己使用的第一个Visual Studio版本?是否还记得CODE出第一段代码时的兴奋?是否还记得那无数个寻找Bug的日日夜夜?开发频道带您一起走进Visual Studio历史,今天我们要介绍的是——Visual Studio 2008。

成都创新互联是一家专业提供渝北企业网站建设,专注与成都网站建设、做网站、html5、小程序制作等业务。10年已为渝北众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

前言:4月份就要发布Visual Studio2010了,它的Beta2版我已经从网上下载下来尝鲜了,对于普通开发人员来说,VS2010与时俱进地增加了很多新的特性以适应新的开发要求,比如增加了多定向支持、并行计算和云计算等,并且在VS2010中也针对VC++做了很大的支持。

作为一个.NET开发人员,我经历了支持.NET开发的VS的各个版本。下面一个开发人员的角度来谈谈我对Visual Studio 2005的感受。

记得最早我练习ASP.NET是用Dreamweaver来练习的,C#代码和HTML都在一个ASPX页面中,很不方便管理。后来别人向我介绍了VS2002,这是第一个支持.NET开发VS开发工具,它所支持的.NET版本是.NET 1.0。它采用了网页与代码分离的模式,是开发人员可以将主要注意力放在业务逻辑处理上,大大提高了开发速度。

Visual Studio 2002推出没多久微软就推出了Visual Studio 2003,Visual Studio 2003支持的.NET版本是.NET 1.1,普通的开发人员可能都不知道Visual Studio 2002与Visual Studio 2003及.NET 1.0与.NET 1.1之间有哪些区别。

Visual Studio 2005的当年的推出让大家马上感觉到有很大的变化,有点耳目一新的感觉。

在编程语法特性上增加了泛型、可空类型等。

泛型

在Visual Studio 2005以前即使遇到特定集合类型,也只能使用通用的集合类型来存储,这样一来在集合中存取值类型数据时存在着装箱和拆箱过程,而且由于在.NET1.1中集合类型被设计成用来存储object对象,所以无法对存入的数据的类型进行保证,在Visual Studio 2005中这个得到了解决,那就是泛型集合。

例如,在Visual Studio 2003中的实现:

 
 
 
 
  1. /// 
  2. /// 使用ArrayList的例子
  3. /// summary>
  4. public void ArrayListDemo()
  5. {
  6.     //声明一个集合,只存储int类型数据
  7.     ArrayList integerList = new ArrayList();
  8.     integerList.Add(1);//没有问题
  9.     integerList.Add("one");//可以添加
  10.     for (int i = 0; i < integerList.Count; i++)
  11.     {
  12.         int value = (int)integerList[i];//对第二个数操作时会抛出异常
  13.     }
  14. }
  15. 在Visual Studio 2005中的实现:
  16. /// 
  17. /// 使用泛型集合的例子
  18. /// summary>
  19. public void ListDemo()
  20. {
  21.     //声明一个只存储int类型数据的泛型集合
  22.     List integerList = new List();
  23.     integerList.Add(1);//没有问题
  24.     //integerList.Add("one");//此句不能编译通过
  25.     for (int i = 0; i < integerList.Count; i++)
  26.     {
  27.         int value = integerList[i];//此处无需做类型转换
  28.     }
  29. }

using关键字

using关键是用引入命名空间之外,在Visual Studio 2005中还可以用来释放一些实现了IDisposable接口的类,using 语句按照正确的方式调用对象上的 Dispose 方法,并(在您按照前面所示方式使用它时)会导致在调用 Dispose 时对象自身处于范围之外。在 using 块中,对象是只读的并且无法进行修改或重新分配。using 语句确保调用 Dispose,即使在调用对象上的方法时发生异常也是如此。通过将对象放入 try 块中,并在调用 finally 块中的 Dispose,可以获得相同的结果;实际上,这就是编译器转换 using 语句的方式。

比如执行对数据库的增删改查操作,在Visual Studio 2005以前我们可能会这么写:

 
 
 
 
  1. /// 
  2. /// 执行Update/Delete/Insert类型的SQL语句,并返回受影响的行数
  3. /// summary>
  4. /// 要执行的Update/Delete/Insert类型的SQL语句param>
  5. /// 执行SQL语句的类型,如是文本型还是存储过程param>
  6. /// 执行存储过程时所需要的参数param>
  7. /// returns>
  8. public int ExecuteNonQuery(string sql, CommandType commandType, SqlParameter[] parameters)
  9. {
  10. //定义SqlConnection对象
  11. SqlConnection connection = null;
  12. //定义SqlCommand对象
  13. SqlCommand command = null;
  14. //定义执行语句之后受影响的行数
  15. int affectedRows = 0;
  16. try
  17. {
  18.     connection = new SqlConnection(connectionString);
  19.     command = new SqlCommand(sql, connection);
  20.     foreach (SqlParameter parameter in parameters)
  21.     {
  22.         command.Parameters.Add(parameter);
  23.     }
  24. command.CommandType = commandType;
  25.     connection.Open();//打开连接
  26.     //执行对数据库的操作
  27.     affectedRows = command.ExecuteNonQuery();
  28. }
  29. finally//在finally中执行关闭和释放SqlConnection及SqlCommand的操作
  30. {
  31.     if (connection != null && connection.State == ConnectionState.Open)
  32.     {
  33.         connection.Close();
  34.     }
  35.     if (command != null)
  36.     {
  37.         command.Dispose();
  38.     }
  39. }
  40. return affectedRows;
  41. }
  42. 在Visual Studio 2005中我们完全可以这么写:
  43. /// 
  44. /// 执行Update/Delete/Insert类型的SQL语句,并返回受影响的行数
  45. /// summary>
  46. /// 要执行的Update/Delete/Insert类型的SQL语句param>
  47. /// 执行SQL语句的类型,如是文本型还是存储过程param>
  48. /// 执行存储过程时所需要的参数param>
  49. /// returns>
  50. public int ExecuteNonQuery(string sql, CommandType commandType, SqlParameter[] parameters)
  51. {
  52. //定义执行语句之后受影响的行数
  53. int affectedRows = 0;
  54. using (SqlConnection connection = new SqlConnection(connectionString))
  55. {
  56.     using (SqlCommand command = new SqlCommand(sql, connection))
  57.     {
  58.         command.CommandType = commandType;
  59.         foreach (SqlParameter parameter in parameters)
  60.         {
  61.             command.Parameters.Add(parameter);
  62.         }
  63.         connection.Open();//打开连接
  64.         //执行对数据库的操作
  65.         affectedRows = command.ExecuteNonQuery();
  66.     }
  67. }
  68. return affectedRows;
  69. }

通过是用using语句大家可以明显看出代码更简洁了,并且是用using语句之后的效果和使用try{}finally{}的效果是一样的。

安全的类型转换

在开发中经常存在一些转换,比如从字符串类型转换成数值类型及从一种引用类型转换成另一种引用类型,在早期的版本中一旦出现不能转换的情况就会抛出异常,实际上系统处理异常的开销比较大,因而没有必要在所有情况下都抛出异常,在Visual Studio 2005中针对这种情况进行了改进。

如下:

 
 
 
 
  1. /// 
  2. /// VS2003中的写法
  3. /// summary>
  4. public void VS2003()
  5. {
  6.     int version1 = 0;
  7.     //下面的转换如果不成功就会抛出异常
  8.     version1 = int.Parse("zhoufoxcn");//这句会抛出异常
  9.     object str = "Hello Visual Studio 2005";
  10.     //下面转换如果失败就会抛出异常
  11.     Button btn = (Button)str;//因为string类型与Button类型之间不能转换,所以会抛出异常
  12.     
  13. }
  14. /// 
  15. /// Visual Studio 2005及更高版本的做法
  16. /// summary>
  17. public void Visual Studio 2005()
  18. {
  19.     int version2;
  20.     //如果转换成功parseSuccess为true,version2为对应字符串转换成的数值
  21.     //如果转换不成功则parseSuccess为false,version2的值不可用
  22.     bool parseSuccess = int.TryParse("zhoufoxcn", out version2);//这句永远不会抛出异常
  23.     if (parseSuccess)
  24.     {
  25.         //这里使用转换后的数值
  26.     }
  27.     object str = "Hello Visual Studio 2005";
  28.     //下面转换如果成功则btn不为null
  29.     //如果不成功则btn为null,但是不会抛出异常
  30.     Button btn = str as Button;//因为string类型与Button类型之间不能转换,所以btn为null
  31.     if (btn != null)
  32.     {
  33.         //这里处理能转换的情况
  34.     }
  35. }

局部类

在Visual Studio 2005中还引入了局部类的概念,这样对一个类的定义可以放在多个物理文件中,在编译的时候编译器会自动将属于统一个类的代码编译成一个完整的类定义。

如下面的代码:

 
 
 
 
  1. /// 
  2. /// Person类的部分定义1,物理文件名为Person1.cs
  3. /// 
  4. public partial class Person
  5. {
  6.     public int Age { get; set; }
  7. }
  8. /// 
  9. /// Person类的部分定义2,物理文件名为Person2.cs
  10. /// 
  11. public partial class Person
  12. {
  13.     public string Name { get; set; }
  14. }

编译的时候会将这两部分编译到一个完整的类定义中,最终编译的Person类总会有Age和Name两个属性。这种情况应用在WinForm开发和ASP.NET开发中都有体现,在WinForm中假如有一个窗体名为Form1,那么就有Form1.cs和Form1.designer.cs两个物理文件都是Form1类的局部类。在ASP.NET中一个ASPX页面对应的aspx.cs也是一个局部类。使用局部类的好处是可以将展示代码和逻辑代码分开,最终编译时会生成一个完整的类的定义。

在ASP.NET开发中也增加了很多亮点,比如增强了可视化编程,在VS2003中用户控件在被使用的页面处于设计视图下不是可视化的,只能在运行后才能看到用户控件最终的样子,这个在开发时多少有些不方便。除此之外还增加了如下功能:增加了ASP.NET Development Server组件、内置文件夹、母版页及主题等。

ASP.NET Development Server

图 ASP.NET Development Server

在VS2002及VS2003中开发ASP.NET应用程序只能使用IIS,每个ASP.NET应用都会作为IIS的一个网站或者虚拟目录,因为开发者的机器上必须安装IIS,而且最好按照先安装IIS再安装VS的步骤进行,否则就需要向IIS注册.NET Framework(早年我曾经为这个问题抓狂过,所以我在《ASP.NET夜话》第一章中特地说了这个注意事项)。而且使用这种开发,部署和调试都不是太方便,因为默认的ASP.NET应用会在IIS根目录下创建虚拟目录,如果没有更改的话一点系统出现问题不能启动恐怕你的代码也不好找回来了(这种情况我也遇见过)。

在Visual Studio 2005中内置了ASP.NET Development Server这个组件,这样开发者的机器上就不必再安装IIS了,而且我们可以基于文件系统开发,这样我们可以任意指定ASP.NET应用程序的存放位置,这样调试和部署起来就相当方便了,源代码管理也很方便。自从出现了ASP.NET Development Server这个组件之后很多ASP.NET开发人员甚至干脆不在开发的机器上安装IIS这个组件了,取而代之的就是ASP.NET Development Server这个组件(如果部署ASP.NET应用仍需要专业的Web服务器)。

母版页

在我们做Web应用的时候,经常会遇到一些页面之间有很多相同的显示部分和行为,如果每个页面都去重复编写这些代码,那就是一件非常麻烦的事情。因此在ASP.NET2.0中提出了母板页的概念,我们可以把多个页面之间相同的行为和显示部分放到母板页中,只需要为每个页面编写不同的部分即可,这样如果我们对公共部分需要变化仅仅更改母板页就能达到目的。母板页的文件后缀名为.master,一个网站中允许定义多个母板页。

母板页不能单独呈现,也就是我们不能在浏览器中直接输入母板页的url地址进行访问,必须依赖于内容页才能呈现。

下面是新建一个母板页的源代码:

 
 
 
 
  1. <%@ Master Language="C#" AutoEventWireup="true" CodeFile="FrontPage.master.cs" Inherits="FrontPage" %>
  2. >
  3.     无标题页title></li> <li>head></li> <li><body></li> <li>    <form id="form1" runat="server"></li> <li>    <div></li> <li>        <asp:contentplaceholder id="ContentPlaceHolder1" runat="server"></li> <li>        asp:contentplaceholder></li> <li>    div></li> <li>    form></li> <li>body></li> <li>html></li> </ol></pre><p>在母板页中有一个“ ”标记,这相当于一个占位标记,将来使用了这个母板页的内容页中的内容将在这个标记中显示。因为母板页已经包含了</p><p>   标记,所以内容页中不允许再出现这些标记。</p><p>而一个内容页的代码如下:</p><pre> <ol> <li><%@ Page Language="C#" MasterPageFile="~/FrontPage.master" AutoEventWireup="true"</li> <li>CodeFile="MyPage.aspx.cs" Inherits="MyPage" Title="Untitled Page" %></li> <li><asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"></li> <li>asp:Content></li> </ol></pre><p>在内容页中有一个 标记,内容页的代码只有放在这个标记之间的代码将来运行时才会可见。</p><p>通过母版页使我们在一组页面间共享结构和内容更加方便。</p><p><strong>内置文件夹</strong></p><p>如果我们使用Visual Studio 2005及更高版本,我们可能会注意到以下情况:</p></p><p>可以看到同样是文件夹,App_Data目录和js目录的图标在Visual Studio 2005中就是不一样,像App_Data这类文件夹的就是内置文件夹,在运行的时候Web服务器会对这类文件夹有特殊的措施,比如像App_Data这类文件夹是不能直接在浏览器地址栏里输入URL进行访问的。这样如果我们采用的是文件型数据库的话(如Access),我们就可以将mdb文件放到这个文件夹下,这样即使别人知道URL地址正确的URL地址也没有办法通过URL来下载,而在Visual Studio 2005及以前版本中,我们只能通过其它办法保护自己的敏感数据了。</p><p><strong>更方便的ASP.NET应用程序发布方式</strong></p><p>在VS2002和VS2003中没有提供脱离源代码发布ASP.NET应用的方式,这样一来开发的ASP.NET就需要将源代码连同项目一起提供给使用者(个人客户或者公司客户),这样一来整个项目的细节全部暴露给了使用者,而现在软件公司的开发模式基本上都是不提供源代码给使用者,所以在早期很多开发人员都在想办法让ASP.NET应用程序中的cs文件编译进dll中发布,早期笔者也曾经这么做过,配置和操作过程比较复杂,而在Visual Studio 2005中这个就不再是问题了,在Visual Studio 2005中可以一键解决这个问题。</p><p>在Visual Studio 2005中鼠标右键点击ASP.NET应用项目,在弹出的菜单中选择“发布网站”就会弹出发布网站的对话框,选择一个目录之后就可以发布了。发布网站成功之后就可以将发布成功后的文件夹(包含了整个ASP.NET应用正确运行的全部资源,如css、javascript、html和ASPX及dll)部署到Web服务器上,更改开发中的环境配置为运行时的环境配置即可正常运行和浏览了。比起以前的版本,这个过程极其方便。</p><p>除此之外,还增加了GridView、TreeView等控件使我们的开发效率大大提高了。而AccessDataSource、SqlDataSource、ObjectDataSource数据源控件的引入使得新手更加容易上手了。</p><p><strong>总结</strong></p><p>Visual Studio 2005是一款非常成功的产品,起着很重要的承上启下的作用。它是对VS2003等以前版本的质的提高,有很多功能比如类型转换、代码段管理、母版页、网站发布、using语句等语法和编译器功能是笔者从Visual Studio 2005后一直都在使用,这些特性确实方便了代码编写和调试,有些还能提高程序的健壮性和性能,从而也提高了开发人员的开发效率。</p><p><strong>Visual Studio 2005历史回放</strong></p></p><p><strong>Visual Studio 2005专业版外包装盒</strong></p><p>旧金山当地时间2005年11月7日。在Cheap Trick乐队的音乐助威声中,微软终于正式发布了Visual Studio 2005和SQL Server 2005。微软公司CEO Steve Ballmer出席了发布仪式。</p><p>SQL Server的上次升级已经是五年前的事情了,而这次二者新版本的发布加上刚刚发布的.NET Framework 2.0,都是为2006年Windows Vista而作的一种准备。Ballmer承认它们来得有些晚了,不过他重点强调了新版本的一些重大改进。</p><p>Visual Studio 2005极大地改进了性能表现和安全性,以满足微软所谓的“企业级(enterprise-grade)”应用。同时微软还发布了高端版本的Visual Studio 2005 Team System,主要针对程序员、测试员以及软件架构师,可以在一个团队之间建立有效的协作,其售价也是不菲,高达$10939。</p><p><strong>Visual Studio 2005安装光盘</strong></p><p><strong>作者简介</strong></p><p>周金桥,网名周公,微软2008年7月MVP,专家堂成员。微软山西.NET俱乐部技术负责人。超过6年的Web开发经验,擅长ASP.NET、程序性能和安全优化。</p> <p> 当前文章:<a href="http://www.hantingmc.com/qtweb/news14/303164.html">VisualStudio2005的那些事儿</a> <br> 本文链接:<a href="http://www.hantingmc.com/qtweb/news14/303164.html">http://www.hantingmc.com/qtweb/news14/303164.html</a> </p> <p> 网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等 </p> <p class="adpic"> <a href="https://www.cdcxhl.com/service/ad.html" target="_blank" class="ad">广告</a> <a href="" target="_blank" class="adimg"><img src=""></a> </p> <p class="copy"> 声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: <a href="https://www.cdcxhl.com/" target="_blank">创新互联</a> </p> </div> <div class="newsmorelb"> <p>猜你还喜欢下面的内容</p> <ul> <li> <a href="/qtweb/news13/303163.html">轻松删除数据库,一招drop全搞定!(删除数据库drop)</a> </li><li> <a href="/qtweb/news12/303162.html">怎么看主板信息</a> </li><li> <a href="/qtweb/news11/303161.html">JavaFX市场收效甚微需寻找新突破</a> </li><li> <a href="/qtweb/news10/303160.html">百度地图怎么放在页面上,怎么把百度放在手机页面上</a> </li><li> <a href="/qtweb/news9/303159.html">Linux系统如何安装NTP服务?(linux安装ntp服务)</a> </li><li> <a href="/qtweb/news8/303158.html">Linux下禁用独显的方法(linux禁用独显)</a> </li><li> <a href="/qtweb/news7/303157.html">服务器租用有效降低成本的几个技巧</a> </li><li> <a href="/qtweb/news6/303156.html">注册域名需要购买服务器吗?域名需要服务器</a> </li><li> <a href="/qtweb/news5/303155.html">菜单怎么制作</a> </li> </ul> </div> </div> <div class="col-lg-3 noneb"> <div class="bkright" style="margin-top: 0"> <p><a href="https://www.cdcxhl.com/news/zuo/">做网站知识</a></p> <ul> <li> <a class="text_overflow" href="/qtweb/news11/301911.html">html中的align属性</a> </li><li> <a class="text_overflow" href="/qtweb/news7/315807.html">请协助解除锁定-其他问题</a> </li><li> <a class="text_overflow" href="/qtweb/news37/520737.html">linux制表符是什么_linux制表符是什么意思</a> </li><li> <a class="text_overflow" href="/qtweb/news38/340488.html">「Linux命令神器」:快速直达文档底部的方法(linux命令直接跳到底部)</a> </li><li> <a class="text_overflow" href="/qtweb/news46/178546.html">CSV格式:数据库引擎的一种常用数据存储方式(数据库引擎csv)</a> </li><li> <a class="text_overflow" href="/qtweb/news14/544564.html">云存储的用途是什么</a> </li><li> <a class="text_overflow" href="/qtweb/news18/221118.html">存储空间?(数据库需要多大的)</a> </li><li> <a class="text_overflow" href="/qtweb/news33/515133.html">广电网络无线路由器如何连接</a> </li><li> <a class="text_overflow" href="/qtweb/news22/489272.html">创新互联WordPress教程:WordPress添加链接</a> </li><li> <a class="text_overflow" href="/qtweb/news7/171557.html">Redis强大的读写能力(redis读写能力)</a> </li><li> <a class="text_overflow" href="/qtweb/news20/75470.html">Mac OS与Linux的不同 认识操作系统的特色与优势 (mac os linux 区别)</a> </li><li> <a class="text_overflow" href="/qtweb/news26/172576.html">多彩世界实现C#Listbox自绘</a> </li><li> <a class="text_overflow" href="/qtweb/news24/470574.html">为什么页码点不了</a> </li><li> <a class="text_overflow" href="/qtweb/news31/446481.html">dig-tl10玩我的世界卡不卡?(windows10dig)</a> </li><li> <a class="text_overflow" href="/qtweb/news35/219785.html">邯郸vps</a> </li> </ul> </div> <div class="bkright tag"> <p><a href="https://www.cdcxhl.com/hangye/" target="_blank">同城分类信息</a></p> <ul> <li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/putaojia/" target="_blank">葡萄架</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/renzaowu/" target="_blank">人造雾</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/jiudiansj/" target="_blank">酒店设计</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/jiaquan/" target="_blank">除甲醛</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/bpfhw/" target="_blank">边坡防护网</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/ggsj/" target="_blank">广告设计</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/yangguangfang/" target="_blank">阳光房</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/shilongwang/" target="_blank">石笼网</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/yangtaihulan/" target="_blank">阳台护栏</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/qchs/" target="_blank">报废汽车回收</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/sclsb/" target="_blank">水处理设备</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/zkj/" target="_blank">公路钻孔机</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/rxfhw/" target="_blank">柔性防护网</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/xiangsu/" target="_blank">橡塑保温</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/zhanting/" target="_blank">展览展示</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/ldjbc/" target="_blank">履带搅拌车</a> </li> </ul> </div> </div> </div> <div class="carousel-inner linkbg" style="background: #fff"> <div class="container"> <a href="http://www.cdhuace.com/logo.html" target="_blank">成都logo设计标志</a>    <a href="http://www.4006tel.net/" target="_blank">网站开发</a>    <a href="http://www.80687.cn/" target="_blank">玄科环保</a>    <a href="https://www.cdxwcx.com/jifang/guanghua.html" target="_blank">成都光华机房</a>    <a href="http://www.cxjshr.com/" target="_blank">衣柜书柜酒柜定制</a>    <a href="https://www.cdxwcx.com/city/dazhou/" target="_blank">达州做网站</a>    <a href="https://www.cdxwcx.com/" target="_blank">做网站设计</a>    <a href="https://www.cdcxhl.com/ssl/https.html" target="_blank">ssl证书申请</a>    <a href="http://seo.cdcxhl.cn/wztg/" target="_blank">成都外贸网站优化</a>    <a href="http://www.hnjierui.cn/" target="_blank">巴中倍辉科技</a>    <a href="https://www.cdxwcx.com/city/meishan/" target="_blank">眉山网站建设</a>    <a href="http://www.idckuai.cn/" target="_blank">网站空间</a>    <a href="https://www.cdxwcx.com/wangzhan/case/dfjg.html" target="_blank">东电技服</a>    <a href="https://www.cdxwcx.com/city/guangan/" target="_blank">广安做网站</a>    <a href="http://www.kswsj.com/" target="_blank">成都网站制作</a>    <a href="http://www.cdxtjz.cn/" target="_blank">成都网站建设</a>    <a href="http://www.cxjianzhan.com/" target="_blank">成都做网站</a>    <a href="https://www.cdcxhl.com/qiye.html" target="_blank">企业网站建设</a>    <a href="http://www.xywzsj.com/" target="_blank">成都钢筋机械设备</a>    <a href="http://chengdu.kswsj.cn/" target="_blank">高端网站设计推广</a>     </div> </div> <footer> <div class="carousel-inner footjz"> <div class="container"> <i class="icon iconfont zbw"></i> 高品质定制 <i class="icon iconfont"></i> 跨终端自动兼容 <i class="icon iconfont"></i> 节约开发成本 <i class="icon iconfont"></i> 开发周期短 <i class="icon iconfont"></i> 一体化服务 <button type="button" class="btn btn-default btn-lg" onClick="window.location.href='tencent://message/?uin=631063699&Site=&Menu=yes'"> 立即开始2800定制网站建设</button> <button type="button" class="btn btn-default btn-xs" onClick="window.location.href='tencent://message/?uin=631063699&Site=&Menu=yes'"> 2800定制网站建设</button> </div> </div> <div class="carousel-inner bqsy"> <div class="container"> <div class="lxfs"> <h4 class="yutelnone">028-86922220 13518219792</h4> <h4 class="yutelblock"><a href="tel:02886922220">028-86922220</a> <a href="tel:13518219792">13518219792</a></h4> <a class="btn btn-default" href="tencent://message/?uin=532337155&Site=&Menu=yes" role="button">网站建设<span>QQ</span>:532337155</a> <a class="btn btn-default" href="tencent://message/?uin=631063699&Site=&Menu=yes" role="button">营销推广<span>QQ</span>:631063699</a> <a class="btn btn1 btn-default" href="mqqwpa://im/chat?chat_type=wpa&uin=532337155&version=1&src_type=web&web_src=oicqzone.com" role="button">网站制作<span>QQ</span>:532337155</a> <a class="btn btn1 btn-default" href="mqqwpa://im/chat?chat_type=wpa&uin=631063699&version=1&src_type=web&web_src=oicqzone.com" role="button">营销推广<span>QQ</span>:631063699</a> <a class="btn btn-default nonea" href="tencent://message/?uin=1683211881&Site=&Menu=yes" role="button">售后QQ:1683211881</a> <div class="dz">创新互联建站专注: <a href="https://www.cdcxhl.com/" target="_blank">网站设计</a> <a href="https://www.cdcxhl.com/" target="_blank">网站制作</a> <a href="https://www.cdcxhl.com/" target="_blank">网站建设</a> <address>地址:成都太升南路288号锦天国际A幢10楼</address> </div> </div> <div class="bzdh dz"><img src="https://www.cdcxhl.com/imges/bottom_logo.png" alt="创新互联"> <p><a href="https://www.cdcxhl.com/menu.html" target="_blank">成都创新互联科技有限公司</a><br> Tel:400-028-6601(7x24h)</p></div> </div> </div> </footer> </body> </html> <script> $.getJSON ("../../qtwebpic.txt", function (data) { var jsonContent = { "featured":data } var random = jsonContent.featured[Math.floor(Math.random() * jsonContent.featured.length)]; $(".adpic .adimg").attr("href",random.link) $(".adpic img").attr("src",random.pic); }) </script>