发布于 2016-06-13 07:08:50 | 73 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

ASP.NET

ASP.NET 是.NET FrameWork的一部分,是一项微软公司的技术,是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术,它可以在通过HTTP请求文档时再在Web服务器上动态创建它们。 指 Active Server Pages(动态服务器页面) ,运行于 IIS(Internet Information Server 服务,是Windows开发的Web服务器)之中的程序 。


今天, 将为大家说明如何在 ASP.NET 中使用一般处理程序或者 WebService 向 javascript 返回 JSON

示例代码下载: http://zsharedcode.googlecode.com/files/JQueryElementDemo.rar

本文中所包含的内容如下:

  * 准备
  * 一般处理程序/ashx
  * WebService/asmx准备

如果希望通过 ashx 或者 asmx 来返回 JSON, 那么需要引用程序集 System.Web.Extensions.dll, 在 .NET 3.5, 4.0 中已经默认包含. 对于 .NET 2.0, 3.0, 需要安装 ASP.NET 2.0 AJAX, 可以在 http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=883 下载.

一般处理程序/ashx

使用一般处理程序返回 JSON, 对于不同版本的 .NET 都是类似, 请看下面的 handler.ashx 的代码:

 
<%@ WebHandler Language="C#" Class="handler" %> 
using System; 
using System.Web; 
using System.Web.Script.Serialization; 
using System.Collections.Generic; 
public class handler : IHttpHandler 
{ 
public void ProcessRequest(HttpContext context) 
{ 
context.Response.ContentType = "text/javascript"; 
context.Response.Cache.SetNoStore ( ); 
string name = context.Request["name"]; 
SortedDictionary<string, object> values = new SortedDictionary<string, object>(); 
values.Add("message", 
string.IsNullOrEmpty(name) ? "无名氏" : 
string.Format("你好 {0}, {1}", name, DateTime.Now)); 
context.Response.Write(new JavaScriptSerializer().Serialize(values)); 
} 
public bool IsReusable 
{ 
get { return false; } 
} 
} 

上面的例子中, 通过 JavaScriptSerializer 类的 Serialize 方法, 将对象转化为 JSON 对应的字符串. 而转化的对象是 SortedDictionary, 会生成 { "message": "你好 x, 20xx-xx-xx xx:xx:xx" } 这样类似的字符串. 如果需要返回数组, 可以定义 object[] 来转换. 代码中还使用了 context.Response.Cache.SetNoStore ( ); 来让浏览器每次请求 ashx 时都重新访问, 而不是使用缓存.
如果使用 jQuery, 可以使用下面的函数来接收 JSON:
 
function(data){ 
alert(data.message); 
} 

WebService/asmx
在不同版本的 .NET 中, 通过 javascript 访问 WebService 并返回 JSON 是略有不同的. 首先, 可以分别采用不同的 Web.config 文件.法全部列出, 如有需要请参考:
.NET 2.0, 3.0 Web.config
 
<?xml version="1.0"?> 
<configuration> 
<system.web> 
<compilation debug="true"> 
<assemblies> 
<add 
assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
</assemblies> 
</compilation> 
<pages/> 
<httpHandlers> 
<remove verb="*" path="*.asmx"/> 
<add verb="*" path="*.asmx" 
type="System.Web.Script.Services.ScriptHandlerFactory" 
validate="false"/> 
</httpHandlers> 
</system.web> 
</configuration> 

.NET 3.5 Web.config
.NET 4.0 Web.config
以上两个版本的 Web.config 可以在示例压缩包中的 Web.3.5.config 和 Web.4.config 中查看.
下面是 webservice.asmx/webservice.cs 的代码:
 
<%@ WebService Language="C#" CodeBehind="~/App_Code/webservice.cs" Class="webservice" %> 
using System; 
using System.Web; 
using System.Web.Services; 
using System.Web.Services.Protocols; 
using System.Web.Script.Services; 
using System.Web.Script.Serialization; 
using System.Collections.Generic; 
[WebService ( Namespace = "http://tempuri.org/" )] 
[WebServiceBinding ( ConformsTo = WsiProfiles.BasicProfile1_1 )] 
[ScriptService] 
public class webservice : System.Web.Services.WebService 
{ 
[WebMethod] 
[ScriptMethod] 
public SortedDictionary<string, object> Save ( string name ) 
{ 
this.Context.Response.Cache.SetNoStore ( ); 
SortedDictionary<string, object> values = new SortedDictionary<string, object> ( ); 
values.Add ( "message", 
string.IsNullOrEmpty ( name ) ? "无名氏" : 
string.Format ( "你好 {0}, {1}", name, DateTime.Now ) ); 
return values; 
} 
} 

为类添加属性 ScriptService, 并对类中的方法使用属性 ScriptMethod, 可以让 javascript 来调用这些方法. 这里不需要再使用 JavaScriptSerializer 将对象转化为 JSON 字符串, 而是直接返回对象即可. 上面的代码中返回了 SortedDictionary, 在 .NET 2.0, 3.0 中将类似于 { "message": "你好 x, 20xx-xx-xx xx:xx:xx" } 的形式, 而对于 .NET 3.5, 4.0 则是 { "d": { "message": "你好 x, 20xx-xx-xx xx:xx:xx" } }, 因此可以分别在 jQuery 中使用下面的函数来接受 JSON:
 
function(data){ 
alert(data.message); 
} 
function(data){ 
alert(data.d.message); 
} 

JQueryElement 是开源共享的代码, 可以在 http://code.google.com/p/zsharedcode/wiki/Download 页面下载 dll 或者是源代码.

实际过程演示: http://www.tudou.com/programs/view/rHCYHX9cmcI/, 建议全屏观看.

欢迎访问 panzer 开源项目, http://zsharedcode.googlecode.com/ , 其中包含了 IEBrowser 控制 WebBrowser 执行各种 js 和 jQuery 脚本以及录制功能 和 jQueryUI 的 Asp.net 控件 JQueryElement.


相关阅读 :
使用ASP.NET一般处理程序或WebService返回JSON的实现代码
asp.net一般处理程序(.ashx)动态生成验证码案例。
asp.net下将Excel转成XML档的实现代码
asp.net webservice返回json的方法
asp.net 2.0里也可以用JSON的使用方法
ASP.NET MVC中将控制器分离到类库的实现
asp.net源程序编译为dll文件并调用的实现过程
asp.net C#生成和解析二维码的实例代码
ASP.NET 获取存储过程返回值的实现代码
asp.net 下拉列表无级数据绑定实现代码
Asp.net XML文档进行添加删改操作的实例代码
ASP.net Substitution 页面缓存而部分不缓存的实现方法
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务