ASP怎样定义应用主题服务器,ASP.NET 4权威指南 目录

目录

前  言

致  谢

第一部分 ASP.NET开发基础

第0章 预备课:学习从这里开始 2

0.1 认识Microsoft.NET 2

0.2 ASP.NET的特点 3

0.3 ASP.NET的版本变迁 4

0.3.1 ASP.NET 1.0与ASP.NET1.1 4

0.3.2 ASP.NET 2.0 5

0.3.3 ASP.NET 3.5 6

0.4 ASP.NET 4为我们带来了什么 7

0.4.1 Microsoft Visual Studio 2010

集成开发环境 7

0.4.2 ASP.NET核心服务 9

0.4.3 ASP.NET Web窗体 12

0.4.4 动态数据 17

0.4.5 ASP.NET Chart控件 18

0.4.6 Microsoft AJAX的功能 18

0.4.7 ASP.NET MVC 19

0.5 Microsoft Visual Studio 2010

集成开发环境 19

0.5.1 解决方案资源管理器 19

0.5.2 控件工具箱 19

0.5.3 服务器资源管理器 20

0.5.4 错误列表与任务列表 20

0.5.5 页面设计窗口与代码编辑窗口 21

0.6 本章小结 22

第1章 开发你的第一个ASP.NET

应用—“Hello,World” 23

1.1 创建“Hello,World”Web应用程序 23

1.1.1 创建解决方案和ASP.NET

Web应用程序 23

1.1.2 创建“Hello,World”

Web页面 28

1.1.3 编译运行程序 33

1.1.4 调试运行程序 34

1.2 ASP.NET网页代码模型 36

1.2.1 单文件页模型 36

1.2.2 代码隐藏页模型 38

1.2.3 选择属于自己的页模型 39

1.3 ASP.NET生命周期 39

1.3.1 IIS 6.0 的ASP.NET应用程序

生命周期 39

1.3.2 IIS 7.0 的ASP.NET应用程序

生命周期 42

1.3.3 ASP.NET页面生命周期 43

1.3.4 用程序来演示ASP.NET

页面生命周期 44

1.4 ASP.NET配置 46

1.4.1 machine.config文件 46

1.4.2 Web.config文件 47

1.4.3 Web.config转换文件 47

1.4.4 Locator特性语法 50

1.4.5 Transform特性语法 52

1.4.6 Web.config文件的配置继承 54

1.4.7 在实际开发中常用的

Web.config配置节设置 54

1.4.8 通过编程读写Web.config

配置节 56

1.5 全局应用程序类Global.asax 58

1.5.1 Global.asax的事件 58

1.5.2 在Global.asax文件里实现

通用防SQL注入漏洞程序 60

1.6 新建Web网站与新建Web应用

程序的区别 63

1.7 本章小结 64

第2章 HTML服务器控件 65

2.1 ASP.NET服务器控件概述 65

2.1.1 ASP.NET服务器控件的

类型 65

2.1.2 ASP.NET服务器控件的类

层次结构 66

2.2 HTML服务器控件概述 68

2.2.1 HTML标签和HTML服务器

控件之间的区别 68

2.2.2 HTML服务器控件的类

层次结构 68

2.2.3 HTML服务器控件的共有

属性 70

2.3 HTML输入控件 71

2.3.1 HtmlInputButton控件 71

2.3.2 HtmlInputSubmit和

HtmlInputReset控件 73

2.3.3 HtmlInputImage控件 73

2.3.4 HtmlInputRadioButton控件 73

2.3.5 HtmlInputCheckBox控件 74

2.3.6 HtmlInputText和HtmlInput

Password控件 75

2.3.7 HtmlInputFile控件 76

2.3.8 HtmlInputHidden控件 77

2.4 HTML容器控件 78

2.4.1 HtmlTextArea控件 78

2.4.2 HtmlSelect控件 79

2.5 HtmlImage控件 80

2.5.1 HtmlImage控件的使用方法 80

2.5.2 使用数据流的形式输出图片 81

2.6 使用代码处理HTML服务器控件 82

2.6.1 设置Style特性和其他属性 82

2.6.2 Attributes属性使用说明 82

2.6.3 用程序动态创建控件 83

2.7 本章小结 84

第3章 Web标准服务器控件 86

3.1 Web标准服务器控件概述 86

3.1.1 Web标准服务器控件的功能 86

3.1.2 与HTML服务器控件的区别 86

3.1.3 WebControl基类 87

3.1.4 单位 87

3.1.5 枚举 88

3.1.6 颜色 88

3.1.7 字体 89

3.1.8 默认按钮 90

3.2 数据显示控件 90

3.2.1 Label控件 90

3.2.2 Literal控件 91

3.3 数据输入控件 92

3.3.1 TextBox控件 92

3.3.2 CheckBox控件 93

3.3.3 CheckBoxList控件 93

3.3.4 RadioButton控件 94

3.3.5 RadioButtonList控件 95

3.4 数据提交控件 95

3.4.1 Button控件 96

3.4.2 ImageButton控件 96

3.4.3 LinkButton控件 97

3.5 图像显示控件 97

3.5.1 Image控件 97

3.5.2 ImageMap控件 98

3.6 文件上传控件 100

3.6.1 使用FileUpload控件上传

文件 100

3.6.2 文件的类型上传限制 102

3.6.3 文件的大小上传限制 103

3.7 Calendar控件 104

3.8 HyperLink控件 106

3.9 Panel控件 107

3.10 HiddenField控件 109

3.11 AdRotator控件 111

3.12 本章小结 113

第4章 ASP.NET验证控件 114

4.1 验证控件概述 114

4.1.1 验证控件的类型 114

4.1.2 BaseValidator类 115

4.1.3 验证流程 116

4.2 表单验证控件:RequiredField

Validator 117

4.3 范围验证控件:RangeValidator 119

4.4 比较验证控件:CompareValidator 120

4.5 正则验证控件:Regular

ExpressionValidator 122

4.6 自定义逻辑验证控件:

CustomValidator 123

4.7 验证信息显示:

ValidationSummary 124

4.8 验证控件编程实践 126

4.8.1 以编程方式验证ASP.NET

服务器控件 126

4.8.2 开发自己的文本验证控件 127

4.8.3 引用自定义服务器控件

的方法 130

4.9 验证组 132

4.10 本章小结 134

第5章 ASP.NET用户控件 135

5.1 用户控件详解 135

5.2 @Control指令 136

5.3 创建简单的用户控件 136

5.3.1 创建一个简单的用户控件 137

5.3.2 将页面转换为用户控件 139

5.4 用户控件编程 142

5.4.1 处理用户控件事件 143

5.4.2 给用户控件添加属性 144

5.4.3 使用自定义对象 145

5.4.4 给用户控件添加事件 148

5.4.5 公开内部Web服务器控件 151

5.4.6 以编程的方式动态加载用户

控件 152

5.5 ClientIDMode属性 153

5.6 本章小结 155

第二部分 ASP.NET数据访问

第6章 ASP.NET数据管理 158

6.1 ADO.NET概述 158

6.1.1 ADO.NET数据提供程序 158

6.1.2 ADO.NET数据提供程序的

核心对象 160

6.1.3 ADO.NET基本类库 160

6.2 Connection类 162

6.2.1 连接字符串 162

6.2.2 连接字符串和配置文件 165

6.2.3 打开与关闭连接 165

6.3 连接池 167

6.3.1 什么是连接池 167

6.3.2 连接池如何工作 168

6.3.3 连接池中的连接 171

6.3.4 连接遗漏 172

6.3.5 自定义连接池的实现类 173

6.4 Command类和DataReader类 176

6.4.1 Command类概述 176

6.4.2 创建Command对象 177

6.4.3 DataReader类概述 178

6.4.4 ExecuteReader()方法 179

6.4.5 ExecuteScalar()方法 182

6.4.6 ExecuteNonQuery()方法 182

6.4.7 SQL注入攻击 183

6.4.8 SQL注入攻击的防范 185

6.5 常用的数据库操作 187

6.5.1 使用数据库函数 187

6.5.2 使用触发器 188

6.5.3 使用存储过程 189

6.6 事务 194

6.6.1 事务概述 194

6.6.2 .NET事务的类型划分 195

6.6.3 存储过程事务 195

6.6.4 ADO.NET本地事务 196

6.6.5 隔离级别 198

6.6.6 SQL Server保存点 203

6.6.7 System.Transactions 204

6.6.8 COM+事务 208

6.7 非连接的数据概述 212

6.8 DataTable类 213

6.8.1 DataTable类概述 214

6.8.2 构建和操作DataTable 214

6.8.3 使用DataAdapter填充

DataTable 222

6.8.4 使用DataReader填充

DataTable 224

6.9 DataSet类 224

6.9.1 使用DataAdapter填充

DataSet 224

6.9.2 使用多个表和关系 225

6.10 DataView类 227

6.10.1 排序数据 227

6.10.2 过滤数据 228

6.10.3 计算列 229

6.10.4 将DataSet、DataTable和

DataView转换成XML 230

6.10.5 将XML转换成DataSet、

DataTable 235

6.11 提供程序无关的代码 238

6.12 本章小结 244

第7章 数据控件绑定与操作 245

7.1 List数据控件 245

7.1.1 List数据控件的共有属性

与方法 246

7.1.2 DropDownList控件 247

7.1.3 RadioButtonList与Check

BoxList控件 250

7.1.4 ListBox控件 251

7.1.5 BulletedList控件 252

7.2 DetailsView控件 254

7.2.1 数据绑定 254

7.2.2 定义字段 255

7.2.3 分页 256

7.2.4 添加、修改和删除 257

7.2.5 样式定义 262

7.3 FormView控件 263

7.4 Repeater控件 267

7.5 ListView控件 268

7.5.1 定义模板 268

7.5.2 分页 271

7.5.3 排序 273

7.5.4 编辑数据 274

7.6 DataList控件 277

7.7 Chart控件 280

7.8 本章小结 286

第8章 详解GridView控件 287

8.1 GridView控件基础 287

8.1.1 数据绑定 287

8.1.2 定义列 288

8.2 格式化GridView 290

8.2.1 格式化字段 291

8.2.2 格式化特定值 292

8.3 样式定义 294

8.4 GridView控件的基本操作 297

8.4.1 数据分页 298

8.4.2 数据排序 299

8.4.3 创建空表头 300

8.4.4 编辑数据 303

8.5 选择行 306

8.5.1 RowDataBound事件 306

8.5.2 SelectedIndexChanging与

SelectedIndexChanged事件 308

8.5.3 将数据字段用做选择按钮 308

8.5.4 在GridView中保持行选择 309

8.6 GridView模板 309

8.6.1 定义GridView模板 310

8.6.2 绑定方法 311

8.6.3 处理事件 311

8.6.4 使用模板编辑 312

8.7 GridView的常用编程技巧 315

8.7.1 GridView实现多表头 315

8.7.2 GridView实现数据统计 322

8.7.3 GridView导出数据 323

8.8 本章小结 324

第9章 LINQ查询基础 325

9.1 LINQ查询概述 325

9.1.1 查询数组 326

9.1.2 查询数据库 327

9.1.3 LINQ查询语法概述 329

9.2 LINQ基本子句 329

9.2.1 from查询子句 330

9.2.2 select选择子句 331

9.2.3 where条件子句 332

9.2.4 orderby排序子句 332

9.2.5 group分组子句 333

9.2.6 into联接子句 334

9.2.7 join联接子句 335

9.2.8 let临时表达式子句 337

9.3 LINQ查询操作 338

9.3.1 查询操作概述 338

9.3.2 筛选操作 340

9.3.3 投影操作 340

9.3.4 排序操作 341

9.3.5 聚合操作 342

9.3.6 集合操作 343

9.3.7 元素操作 344

9.3.8 数据类型转换操作 346

9.3.9 生成操作 346

9.3.10 限定符操作 346

9.3.11 连接操作 347

9.3.12 SequenceEqual操作 348

9.3.13 Contact操作 348

9.3.14 Skip与SkipWhile操作 348

9.3.15 Take与TakeWhile操作 349

9.4 本章小结 349

第10章 LINQ to ADO.NET 350

10.1 LINQ to SQL 350

10.1.1 DataContext类 350

10.1.2 延迟执行 361

10.1.3 自动生成数据类 364

10.1.4 处理关系 368

10.1.5 使用存储过程 370

10.1.6 插入、更新与删除操作 371

10.2 LINQ to DataSet 373

10.2.1 LINQ to DataSet概述 373

10.2.2 单表查询 374

10.2.3 交叉表查询 375

10.2.4 用查询创建数据表 377

10.2.5 修改表中字段数据 378

10.3 QueryExtender控件 379

10.3.1 SearchExpession 379

10.3.2 RangeExpression 381

10.3.3 PropertyExpression 382

10.3.4 OrderByExpression 383

10.3.5 CustomExpression 385

10.4 本章小结 386

第11章 XML与LINQ to XML 387

11.1 XML概述 387

11.1.1 XML声明 388

11.1.2 XML元素 388

11.1.3 XML节点 388

11.1.4 XML属性 389

11.2 基于流的XML处理 389

11.2.1 XmlTextWriter 389

11.2.2 XmlTextReader 392

11.3 基于内存中的XML处理 394

11.3.1 XmlDocument 394

11.3.2 用XPath搜索XmlDocument 398

11.3.3 XPathNavigator 399

11.4 验证XML 401

11.4.1 XML架构 402

11.4.2 验证XmlDocument 402

11.5 LINQ to XML 405

11.5.1 LINQ to XML类概述 405

11.5.2 创建XML 406

11.5.3 读取与查询XML 407

11.5.4 添加XML元素、属性

和节点 409

11.5.5 修改XML元素、属性

和节点 409

11.5.6 删除XML元素、属性和

节点 411

11.6 本章小结 411

第12章 ADO.NET实体框架 412

12.1 理解ADO.NET实体框架 412

12.1.1 生成模型和映射 413

12.1.2 将概念模型映射到存储

模型 416

12.1.3 使用实体数据 419

12.1.4 ADO.NET实体框架

的优点 421

12.2 LINQ to Entities 421

12.2.1 简单的对象查询处理 422

12.2.2 排序、分组与聚合数据 423

12.2.3 调用在数据库中定义的

自定义函数 425

12.2.4 调用在数据库中定义的

存储过程 426

12.3 Entity SQL 428

12.4 操作对象 429

12.4.1 创建和添加对象 429

12.4.2 修改对象 430

12.4.3 删除对象 430

12.4.4 保存更改和管理并发 431

12.5 本章小结 432

第三部分 构建ASP.NET站点

第13章 页面样式与布局 434

13.1 在HTML中使用CSS的三种形式 434

13.1.1 内联样式表 435

13.1.2 内部样式表 435

13.1.3 外部样式表 437

13.1.4 各种样式表的优先级 438

13.2 CSS基本语法 439

13.2.1 CSS语法结构 439

13.2.2 背景 443

13.2.3 字体 446

13.2.4 文本 448

13.3 CSS框模型 451

13.3.1 内边距 452

13.3.2 边框 453

13.3.3 外边距 456

13.4 CSS定位 459

13.4.1 绝对定位 460

13.4.2 相对定位 461

13.4.3 固定定位 461

13.5 CSS浮动 461

13.5.1 float属性 462

13.5.2 clear属性 464

13.5.3 用float和clear创建三栏

动态布局 465

13.6 在VS2010中编辑CSS 467

13.6.1 添加内联样式表 467

13.6.2 添加外部样式表 468

13.7 常用页面布局标签 469

13.7.1 表格标签 470

13.7.2 div标签 473

13.8 本章小结 478

第14章 ASP.NET母版页 479

14.1 母版页基础 479

14.1.1 创建简单的母版页 480

14.1.2 使用简单的内容页 482

14.1.3 ContentPlaceHolder控件

里默认内容 485

14.1.4 相对路径的处理 486

14.1.5 div+css方式布局母版页 488

14.1.6 通过Web.config文件全局

设置母版页 490

14.2 在母版页和内容页之间传递数据 491

14.2.1 使用Page.Master属性 492

14.2.2 使用MasterType指令 492

14.2.3 使用MasterPage.FindControl

方法 492

14.3 以编程方式设置母版页 493

14.4 嵌套母版页 493

14.4.1 一个嵌套母版页示例 494

14.4.2 嵌套母版页中的控件访问 495

14.5 本章小结 497

第15章 主题和皮肤 498

15.1 使用ASP.NET中的主题 498

15.1.1 主题与CSS的区别 498

15.1.2 主题文件夹和外观 499

15.1.3 给单个ASP.NET页面应用

主题 500

15.1.4 StyleSheetTheme属性 501

15.1.5 把主题应用于整个应用

程序 502

15.1.6 禁用服务器控件中的

主题 503

15.1.7 禁用Web页面上的主题

特性 503

15.2 创建自己的主题 504

15.2.1 创建皮肤文件 504

15.2.2 在主题中包含CSS文件 506

15.2.3 在主题中包含图像 508

15.3 定义多个皮肤选项 510

15.4 以编程的方式设置主题 511

15.4.1 编程指定页面的主题 512

15.4.2 编程指定控件的SkinID 512

15.5 理解Page和Master页面的

EnableTheming属性 512

15.6 本章小结 513

第16章 站点导航 514

16.1 多视图页面 514

16.1.1 MultiView控件 515

16.1.2 Wizard控件 521

16.2 理解站点地图 526

16.2.1 Web.sitemap 文件 527

16.2.2 配置多个站点地图 528

16.3 SiteMapDataSource控件 529

16.3.1 绑定站点地图 530

16.3.2 自定义显示站点地图 531

16.4 SiteMapPath控件 534

16.4.1 在网站导航中使用SiteMap

Path控件 534

16.4.2 自定义链接样式属性 536

16.4.3 自定义模板属性 537

16.4.4 自定义显示在链接之间

的字符 538

16.4.5 反转SiteMapPath控件所

显示的路径的方向 538

16.4.6 限制显示的父链接的数量 539

16.5 处理站点地图文件 540

16.5.1 编程枚举站点地图节点 540

16.5.2 编程修改内存中的站点

地图节点 542

16.5.3 自定义站点地图信息 543

16.6 自定义SiteMapProvider从数据库中

读取站点地图数据结构 544

16.6.1 数据表设计 544

16.6.2 定义SqlSiteMapProvider 544

16.6.3 配置自定义站点地图提供

程序 549

16.7 站点地图安全性调整 550

16.7.1 启用安全性调整 550

16.7.2 使用角色 551

16.7.3 对多个站点地图或提供程序

使用安全性调整 552

16.7.4 性能注意事项 552

16.8 TreeView控件 552

16.8.1 TreeView结构 552

16.8.2 使用SiteMapDataSource

绑定TreeView 554

16.8.3 使用程序动态建立TreeView

节点 554

16.8.4 使用XML数据源绑定

TreeView 556

16.8.5 使用数据库绑定TreeView 558

16.8.6 按需填充TreeView 560

16.8.7 TreeView样式 562

16.8.8 添加复选框 565

16.9 Menu控件 568

16.9.1 Menu控件结构 568

16.9.2 Menu控件显示模式 569

16.9.3 从数据库动态绑定Menu

控件 570

16.9.4 Menu样式 572

16.9.5 Menu模板 574

16.10 本章小结 575

第四部分 ASP.NET高级话题

第17章 ASP.NET状态管理 578

17.1 ASP.NET状态管理概述 578

17.1.1 服务器端状态管理 578

17.1.2 客户端状态管理 579

17.2 Response对象 580

17.3 Request对象 582

17.4 Server对象 584

17.5 Cookie 586

17.5.1 创建Cookie 587

17.5.2 控制Cookie的范围 588

17.5.3 读取Cookie 589

17.5.4 修改Cookie 591

17.5.5 删除Cookie 591

17.5.6 Cookie的优点与局限性 591

17.6 会话状态 592

17.6.1 会话变量 592

17.6.2 会话标识符 593

17.6.3 会话状态模式 594

17.6.4 会话状态事件 608

17.6.5 会话状态的生命周期 609

17.6.6 遍历与销毁会话状态 610

17.6.7 会话状态的优点与局限性 610

17.7 视图状态 611

17.7.1 写入和读取视图状态 611

17.7.2 保证视图状态的安全 612

17.7.3 视图状态的优点与局限性 613

17.7.4 ViewStateMode 614

17.8 ASP.NET路由 614

17.8.1 路由与URL模式 614

17.8.2 添加与使用路由 615

17.9 本章小结 617

第18章 自定义服务器控件 618

18.1 创建简单的自定义服务器控件 618

18.1.1 创建MyLink控件 619

18.1.2 创建支持样式属性的

MyLink控件 620

18.1.3 通过派生现有的控件来

创建MyLink控件 622

18.1.4 呈现过程 624

18.2 元数据特性 624

18.2.1 应用于控件的特性 625

18.2.2 应用于公共属性的特性 626

18.2.3 应用于事件成员的特性 628

18.3 视图状态与控件状态 628

18.4 事件处理 632

18.4.1 回传数据与change事件 632

18.4.2 触发回传 634

18.5 简单属性和子属性 635

18.5.1 定义MyBook控件 636

18.5.2 定义子属性Author 639

18.5.3 定义类型转换器AuthorConverter 641

18.5.4 使用MyBook控件 643

18.6 集合属性 644

18.7 自定义状态管理 648

18.7.1 定义MyNewBook控件 649

18.7.2 定义子属性

StateManagedAuthor 652

18.7.3 定义类型转换器StateManaged

AuthorConverter 655

18.7.4 使用MyNewBook控件 657

18.8 组合式控件 658

18.9 本章小结 662

第19章 ASP.NET缓存 663

19.1 理解ASP.NET缓存 663

19.2 输出缓存 664

19.2.1 使用@OutputCache指令

以声明的方式设置缓存 664

19.2.2 ASP.NET中的缓存配置 667

19.2.3 自定义缓存控制 668

19.2.4 使用HttpCachePolicy类以

编程的方式设置缓存 669

19.2.5 部分页缓存 671

19.2.6 缓存后替换 672

19.2.7 检查缓存页的有效性 674

19.2.8 使用缓存键依赖项缓存页

输出 676

19.2.9 使用文件依赖项缓存页

输出 676

19.3 数据缓存 677

19.3.1 将项添加到缓存中 677

19.3.2 检索缓存项的值 680

19.3.3 从缓存中删除项 681

19.4 高级缓存依赖 681

19.4.1 SQL Server 2005与SQL

Server 2008缓存依赖 681

19.4.2 自定义缓存依赖 685

19.5 自定义输出缓存提供程序 688

19.6 分布式缓存Velocity 693

19.6.1 安装与操作Velocity 693

19.6.2 存储与检索简单的数据 696

19.6.3 存储与检索复杂的数据 700

19.6.4 使用分区与标签 704

19.6.5 锁定模型 705

19.7 本章小结 706

第20章 多语言本地化应用程序 707

20.1 ASP.NET网页资源 707

20.1.1 全局资源文件 709

20.1.2 本地资源文件 709

20.1.3 全局与本地资源文件

使用建议 710

20.2 在网页中使用资源 710

20.2.1 隐式本地化 710

20.2.2 显式本地化 711

20.2.3 以编程方式检索资源值 711

20.3 为不同的语言选择资源文件 712

20.3.1 以声明方式设置区域性和

UI区域性 713

20.3.2 以编程方式设置区域性和

UI区域性 714

20.3.3 显式地选择页面的显示

语言 714

20.4 CultureInfo类 716

20.4.1 CultureInfo类的方法 716

20.4.2 CurrentCulture属性 718

20.4.3 CurrentUICulture属性 718

20.4.4 InvariantCulture属性 719

20.4.5 其他属性 719

20.5 System.Globalization命名空间 720

20.5.1 日历 720

20.5.2 日期和时间 722

20.5.3 数值型数据 726

20.5.4 数据的比较和排序 728

20.6 设置编码 735

20.7 本章小结 735

第21章 ASP.NET Web部件 736

21.1 什么是Web部件 736

21.2 Web部件控件集 737

21.2.1 基本要素 737

21.2.2 控件概述 738

21.3 创建简单的Web部件页面 739

21.3.1 Web部件的使用方法 739

21.3.2 Web部件页面创建示例 740

21.3.3 Web部件生命周期 747

21.4 页显示模式 749

21.4.1 BrowseDisplayMode

(浏览模式) 749

21.4.2 DesignDisplayMode

(设计模式) 749

21.4.3 EditDisplayMode(编辑

模式) 751

21.4.4 CatalogDisplayMode

(目录模式) 755

21.4.5 ConnectDisplayMode

(连接模式) 757

21.5 Web部件的高级应用 758

21.5.1 自定义Web部件 758

21.5.2 自定义谓词 763

21.5.3 自定义编辑器 764

21.5.4 连接Web部件 767

21.5.5 导出导入Web部件 773

21.5.6 自定义个性化数据提供

程序 778

21.5.7 配置文件中的WebParts

元素 782

21.6 本章小结 783

【责任编辑:云霞 TEL:(010)68476606】

点赞 0

你可能感兴趣的:(ASP怎样定义应用主题服务器)