一个AJAX的请求--------------Json的解析(Json字符串,Json对象)-----------------

mvc使用JsonResult返回Json数据 

json字符串与JSON对象

<控制器>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using JSON.Models;

namespace JSON.Controllers
{
    public class HomeController : Controller
    {

        public ActionResult Index()
        {
            return View();
        }

        /// 
        /// 获取年龄
        /// 
        /// 
        /// 返回一个字符串
        public ActionResult GetAge(string username)
        {
            var age = "";
            if (!string.IsNullOrWhiteSpace(username))
            {
                string sql = "select Age from t_user where UserName=@username";
                age = (SqlHelper.ExecuteScalar(sql, new SqlParameter("username", username))).ToString();
            }
            return Content(age); 

        }
        /// 
        /// 获取姓名
        /// 
        /// 
        /// 方法放回一个Table表的Json对象
        public ActionResult GetName(int id)
        {
            string sql = "select * from t_user where id=@id";
            DataTable dt=SqlHelper.ExecuteDataTable(sql,new SqlParameter("id",id));
            string data = DataTableToJson.ToJson(dt); //调用DataTableToJson类的ToJson方法,将dt这个表转换成Json格式的字符串
            //Type type= data.GetType(); 通过type调试得知data其实就是一个string类型。

            var res = new JsonResult();
            res.Data = new { MyData = data };//将Json格式的字符串data赋给一个匿名类对象的MyData属性(注:这个MyData名字你可以自己随意定义)。然后将这个匿名类对象赋给res的Data属性。
            res.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            return res;//也可以写成下面的形式

            
            //return new JsonResult  //返回一个JsonResult对象
            //{
            //    Data = new { MyData = data },
            //    JsonRequestBehavior = JsonRequestBehavior.AllowGet
            //};
        }

    }
}


<视图>

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>




    
    Index
    


    



SQLHelper
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.Reflection;

namespace JSON.Controllers
{
    public class SqlHelper
    {
        /// 
        /// 获取连接数据库字符串
        /// 
        private static string connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;

        /// 
        /// 执行查询,并将查询的结果以DataTable的形式返回
        /// 
        /// 要执行的sql语句
        /// sql语句的参数
        /// 返回值是一个DataTable
        public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                //换一种写法,与上面的几种写法稍稍有点不同
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    cmd.Parameters.AddRange(parameters);
                    DataTable dt = new DataTable();
                    using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
                    {
                        adapter.Fill(dt);
                        return dt;
                    }

                }
            }
        }

}


1

一个AJAX的请求--------------Json的解析(Json字符串,Json对象)-----------------_第1张图片

2

一个AJAX的请求--------------Json的解析(Json字符串,Json对象)-----------------_第2张图片

3

一个AJAX的请求--------------Json的解析(Json字符串,Json对象)-----------------_第3张图片

4

一个AJAX的请求--------------Json的解析(Json字符串,Json对象)-----------------_第4张图片



===============================================第二种写法。直接将字符串赋值给JsonResult对象的Data属性。看图可以对比直接将Json格式的字符串赋值给JsonResult对象的Data属性的与将匿名类对象赋值给JsonResult对象的Data属性的区别。

控制器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using JSON.Models;

namespace JSON.Controllers
{
    public class HomeController : Controller
    {

        public ActionResult Index()
        {
            return View();
        }

        /// 
        /// 获取年龄
        /// 
        /// 
        /// 返回一个字符串
        public ActionResult GetAge(string username)
        {
            var age = "";
            if (!string.IsNullOrWhiteSpace(username))
            {
                string sql = "select Age from t_user where UserName=@username";
                age = (SqlHelper.ExecuteScalar(sql, new SqlParameter("username", username))).ToString();
            }
            return Content(age); 

        }
        /// 
        /// 获取姓名
        /// 
        /// 
        /// 方法放回一个Table表的Json对象
        public ActionResult GetName(int id)
        {
            string sql = "select * from t_user where id=@id";
            DataTable dt=SqlHelper.ExecuteDataTable(sql,new SqlParameter("id",id));
            string data = DataTableToJson.ToJson(dt); //调用DataTableToJson类的ToJson方法,将dt这个表转换成Json格式的字符串
           

            var res = new JsonResult();
            res.Data = data;//这里直接将data这个字符串赋值给res的Data属性
            res.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            return res;
        }

    }
}

视图
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>




    
    Index
    


    
一个AJAX的请求--------------Json的解析(Json字符串,Json对象)-----------------_第5张图片
图2
一个AJAX的请求--------------Json的解析(Json字符串,Json对象)-----------------_第6张图片



你可能感兴趣的:(Mvc,AJAX,JSON)