最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用ASP.NET一般處理程序或WebService返回JSON的實(shí)現(xiàn)代碼

 更新時(shí)間:2011年10月25日 11:51:09   作者:  
今天, 將為大家說(shuō)明如何在 ASP.NET 中使用一般處理程序或者 WebService 向 javascript 返回 JSON

示例代碼下載: http://zsharedcode.googlecode.com/files/JQueryElementDemo.rar

本文中所包含的內(nèi)容如下:

  * 準(zhǔn)備
  * 一般處理程序/ashx
  * WebService/asmx準(zhǔn)備

如果希望通過(guò) ashx 或者 asmx 來(lái)返回 JSON, 那么需要引用程序集 System.Web.Extensions.dll, 在 .NET 3.5, 4.0 中已經(jīng)默認(rèn)包含. 對(duì)于 .NET 2.0, 3.0, 需要安裝 ASP.NET 2.0 AJAX, 可以在 http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=883 下載.

一般處理程序/ashx

使用一般處理程序返回 JSON, 對(duì)于不同版本的 .NET 都是類似, 請(qǐng)看下面的 handler.ashx 的代碼:

復(fù)制代碼 代碼如下:

<%@ 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) ? "無(wú)名氏" :
string.Format("你好 {0}, {1}", name, DateTime.Now));
context.Response.Write(new JavaScriptSerializer().Serialize(values));
}
public bool IsReusable
{
get { return false; }
}
}

上面的例子中, 通過(guò) JavaScriptSerializer 類的 Serialize 方法, 將對(duì)象轉(zhuǎn)化為 JSON 對(duì)應(yīng)的字符串. 而轉(zhuǎn)化的對(duì)象是 SortedDictionary, 會(huì)生成 { "message": "你好 x, 20xx-xx-xx xx:xx:xx" } 這樣類似的字符串. 如果需要返回?cái)?shù)組, 可以定義 object[] 來(lái)轉(zhuǎn)換. 代碼中還使用了 context.Response.Cache.SetNoStore ( ); 來(lái)讓瀏覽器每次請(qǐng)求 ashx 時(shí)都重新訪問(wèn), 而不是使用緩存.
如果使用 jQuery, 可以使用下面的函數(shù)來(lái)接收 JSON:
復(fù)制代碼 代碼如下:

function(data){
alert(data.message);
}

WebService/asmx
在不同版本的 .NET 中, 通過(guò) javascript 訪問(wèn) WebService 并返回 JSON 是略有不同的. 首先, 可以分別采用不同的 Web.config 文件.法全部列出, 如有需要請(qǐng)參考:
.NET 2.0, 3.0 Web.config
復(fù)制代碼 代碼如下:

<?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
以上兩個(gè)版本的 Web.config 可以在示例壓縮包中的 Web.3.5.config 和 Web.4.config 中查看.
下面是 webservice.asmx/webservice.cs 的代碼:
復(fù)制代碼 代碼如下:

<%@ 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 ) ? "無(wú)名氏" :
string.Format ( "你好 {0}, {1}", name, DateTime.Now ) );
return values;
}
}

為類添加屬性 ScriptService, 并對(duì)類中的方法使用屬性 ScriptMethod, 可以讓 javascript 來(lái)調(diào)用這些方法. 這里不需要再使用 JavaScriptSerializer 將對(duì)象轉(zhuǎn)化為 JSON 字符串, 而是直接返回對(duì)象即可. 上面的代碼中返回了 SortedDictionary, 在 .NET 2.0, 3.0 中將類似于 { "message": "你好 x, 20xx-xx-xx xx:xx:xx" } 的形式, 而對(duì)于 .NET 3.5, 4.0 則是 { "d": { "message": "你好 x, 20xx-xx-xx xx:xx:xx" } }, 因此可以分別在 jQuery 中使用下面的函數(shù)來(lái)接受 JSON:
復(fù)制代碼 代碼如下:

function(data){
alert(data.message);
}
function(data){
alert(data.d.message);
}

JQueryElement 是開(kāi)源共享的代碼, 可以在 http://code.google.com/p/zsharedcode/wiki/Download 頁(yè)面下載 dll 或者是源代碼.

實(shí)際過(guò)程演示: http://www.tudou.com/programs/view/rHCYHX9cmcI/, 建議全屏觀看.

歡迎訪問(wèn) panzer 開(kāi)源項(xiàng)目, http://zsharedcode.googlecode.com/ , 其中包含了 IEBrowser 控制 WebBrowser 執(zhí)行各種 js 和 jQuery 腳本以及錄制功能 和 jQueryUI 的 Asp.net 控件 JQueryElement.

相關(guān)文章

  • C# 遞歸函數(shù)詳細(xì)介紹及使用方法

    C# 遞歸函數(shù)詳細(xì)介紹及使用方法

    什么是遞歸函數(shù)/方法?任何一個(gè)方法既可以調(diào)用其他方法也可以調(diào)用自己,而當(dāng)這個(gè)方法調(diào)用自己時(shí),我們就叫它遞歸函數(shù)或遞歸方法,接下來(lái)詳細(xì)介紹需要了解的朋友可以參考下
    2012-12-12
  • ASP.NET Core緩存靜態(tài)資源示例詳解

    ASP.NET Core緩存靜態(tài)資源示例詳解

    我們?cè)趦?yōu)化Web服務(wù)的時(shí)候,對(duì)于靜態(tài)的資源文件,通常都是通過(guò)客戶端緩存、服務(wù)器緩存、CDN緩存,這三種方式來(lái)緩解客戶端對(duì)于Web服務(wù)器的連接請(qǐng)求壓力的。下面這篇文章主要給大家介紹了關(guān)于ASP.NET Core緩存靜態(tài)資源的相關(guān)資料,需要的朋友可以參考下。
    2018-02-02
  • 理解ASP.NET Core 啟動(dòng)類(Startup)

    理解ASP.NET Core 啟動(dòng)類(Startup)

    這篇文章主要介紹了ASP.NET Core 啟動(dòng)類(Startup),文中運(yùn)用代碼講解相關(guān)知識(shí)非常詳細(xì),感興趣的小伙伴可以參考一下
    2021-09-09
  • CefSharp v62修改方法(支持.net4.0)

    CefSharp v62修改方法(支持.net4.0)

    下面小編就為大家分享一篇CefSharp v62修改方法(支持.net4.0),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • 實(shí)現(xiàn)基于事件通知的.Net套接字

    實(shí)現(xiàn)基于事件通知的.Net套接字

    實(shí)現(xiàn)基于事件通知的.Net套接字...
    2006-09-09
  • Asp.net 5種頁(yè)面轉(zhuǎn)向方法

    Asp.net 5種頁(yè)面轉(zhuǎn)向方法

    頁(yè)面轉(zhuǎn)向也是有技巧的,下面的是asp.net下的幾種轉(zhuǎn)向方法。
    2009-02-02
  • ASP.NET Core 數(shù)據(jù)保護(hù)(Data Protection)上篇

    ASP.NET Core 數(shù)據(jù)保護(hù)(Data Protection)上篇

    這篇文章主要為大家詳細(xì)介紹了ASP.NET Core 數(shù)據(jù)保護(hù)(Data Protection),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 使用本機(jī)IIS?Express開(kāi)發(fā)Asp.Net?Core應(yīng)用圖文教程

    使用本機(jī)IIS?Express開(kāi)發(fā)Asp.Net?Core應(yīng)用圖文教程

    IIS Express是一個(gè)Mini版的IIS,能夠支持所有的Web開(kāi)發(fā)任務(wù),本篇經(jīng)驗(yàn)將和大家介紹使用自定義主機(jī)名來(lái)訪問(wèn)運(yùn)行在IIS?Express上的站點(diǎn)程序的方法,希望對(duì)大家的工作和學(xué)習(xí)有所幫助
    2023-06-06
  • ASP.net中實(shí)現(xiàn)基于UrlRewrite的防盜鏈功能

    ASP.net中實(shí)現(xiàn)基于UrlRewrite的防盜鏈功能

    這篇文章主要介紹了ASP.net中如何實(shí)現(xiàn)基于UrlRewrite的防盜鏈,需要的朋友可以參考下
    2014-03-03
  • 未處理的事件"PageIndexChanging" 之解決方案

    未處理的事件"PageIndexChanging" 之解決方案

    今天我寫(xiě)一個(gè)小程序遇到這個(gè)問(wèn)題,上網(wǎng)搜了一下,已經(jīng)有很好的解決方法了,以前都是拉控件自己生成,現(xiàn)在用代碼自己寫(xiě)就出現(xiàn)了這個(gè)問(wèn)題
    2008-07-07

最新評(píng)論

平湖市| 离岛区| 莆田市| 牙克石市| 稷山县| 许昌县| 北安市| 五莲县| 聂拉木县| 西乌珠穆沁旗| 婺源县| 泰州市| 漠河县| 太谷县| 陈巴尔虎旗| 河源市| 加查县| 清涧县| 雷山县| 宁乡县| 东阳市| 土默特右旗| 乌审旗| 周至县| 巴中市| 长汀县| 巩留县| 新丰县| 抚顺市| 泾阳县| 南漳县| 项城市| 章丘市| 新疆| 大兴区| 当雄县| 马鞍山市| 海林市| 宜宾市| 望都县| 余江县|