asp.net和json的應用例項

admin發表於2017-02-02
現在asp.net也是最為流行的後臺語言之一,又由於json是當前最為流行的資料傳輸格式之一。

所以處理JSON格式資料也是實際應用中比較常見的,下面就分享一段實現此功能的程式碼例項,希望能夠給需要的朋友帶來幫助。

程式碼例項:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script>
$(document).ready(function () {
  $.ajax({
    type: "get",
    dataType: "json",
    url: "demo/ajax/net/Handler.ashx",
    success: function (msg) {
      var data = msg.table;
      $.each(data, function (i, n) {
        var row = $("#template").clone();
        row.find("#userID").text(n.ID);
        row.find("#nameID").text(n.username);
        row.find("#ageID").text(n.age);
        row.find("#addressID").text(n.address);
        row.find("#scoreID").text(n.score);
        row.appendTo("#data");//新增到模板的容器中
      });
    }
  });
})
</script>
</head>
<body>
<div>
  <div>
    <ul id="data">
      <li id="template">
          <span id="userID">使用者ID</span>
          <span id="nameID">姓名</span>
          <span id="ageID">年齡</span>
          <span id="addressID">地址</span> 
          <span id="scoreID">分數</span>
        </li>
      </ul>
    </div>
  </div>
</body>
</html>

上面的是前端的執行測試程式碼,比較簡單,就是一個ajax請求,然後對資料進行遍歷操作。

下面是後臺處理的.net程式碼,如下:

[C#] 純文字檢視 複製程式碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Configuration;
using System.Data.OleDb;
using System.Data;
 
namespace ajax
{
    /// <summary>
    /// Handler 的摘要說明
    /// </summary>
    public class Handler : IHttpHandler
    {
 
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            //不讓瀏覽器快取
            context.Response.Buffer = true;
            context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
            context.Response.AddHeader("pragma", "no-cache");
            context.Response.AddHeader("cache-control", "");
            context.Response.CacheControl = "no-cache";
 
            string result = "";
            result = GetPageData();
            context.Response.Write(result);
        }
        private string GetPageData()
        {
           string connString=ConfigurationManager.ConnectionStrings["access_con"].ConnectionString;
           string configPath=ConfigurationManager.ConnectionStrings["access_path"].ConnectionString;
           string conPath = HttpContext.Current.Server.MapPath(configPath);
           OleDbConnection conn = new OleDbConnection(connString + conPath);
 
            string sql = "select * from code order by id asc";
 
            OleDbDataAdapter da = new OleDbDataAdapter(sql, conn);
            DataTable dt = new DataTable("table");
            da.Fill(dt);
            return DataTable2Json(dt);
 
        }
 
        private string DataTable2Json(DataTable dt)
        {
            StringBuilder jsonBuilder = new StringBuilder();
            jsonBuilder.Append("{\"");
            jsonBuilder.Append(dt.TableName);
            jsonBuilder.Append("\":[");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                jsonBuilder.Append("{");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    jsonBuilder.Append("\"");
                    jsonBuilder.Append(dt.Columns[j].ColumnName);
                    jsonBuilder.Append("\":\"");
                    jsonBuilder.Append(dt.Rows<i>[j].ToString());
                    jsonBuilder.Append("\",");
                }
                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                jsonBuilder.Append("},");
            }
            jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
            jsonBuilder.Append("]");
            jsonBuilder.Append("}");
            return jsonBuilder.ToString();
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

上面的是.net的後臺處理程式碼,懂.net應該能夠輕鬆看懂。

需要特別注意的是,這裡採用了一種模版技術的效果,就是通過對應的id值繫結資料,這樣的話,只要id值不變,前臺無論怎麼修改結構或者樣式,都不會影響資料的顯示,這可以說是一大便利之處。

為了方便感興趣的朋友分析程式碼,完整程式碼下載(帶有資料庫):

相關文章