详解mvc使用JsonResult返回Json数据

所属分类: 网络编程 / ASP.NET 阅读数: 903
收藏 0 赞 0 分享

controller 中定义以下方法:

public JsonResult UpdateSingle(int id, string actionName, string actionValue) 
  { 
   var res = new JsonResult(); 
   //var value = "actionValue"; 
   //db.ContextOptions.ProxyCreationEnabled = false; 
   var list = (from a in db.Articles 
      select new 
      { 
       name = a.ArtTitle, 
       yy = a.ArtPublishTime 
      }).Take(5); 
   //记得这里要select new 否则会报错:序列化类型 System.Data.Entity.DynamicProxies XXXXX 的对象时检测到循环引用。 
   //不select new 也行的加上这句 //db.ContextOptions.ProxyCreationEnabled = false; 
   res.Data = list;//返回列表 
 
   var name = "小华"; 
   var age = "12"; 
   var name1 = "小华"; 
   var age1 = "12"; 
   res.Data = new object[] { new { name, age }, new { name1, age1 } };//返回一个自定义的object数组 
 
   var person = new { Name = "小明", Age = 22, Sex = "男" }; 
   res.Data = person;//返回单个对象; 
 
   res.Data = "这是个字符串";//返回一个字符串,意义不大; 
 
   res.JsonRequestBehavior = JsonRequestBehavior.AllowGet;//允许使用GET方式获取,否则用GET获取是会报错。 
   return res; 
  } 

页面调用:

<a href="javascript:void(0);" onclick="javascript:upclick(this);">Click Me</a> 
<script type="text/javascript"> 
 function upclick(o) { 
  var obj = $(o); 
  alert(obj); 
  $.ajax({   
   url: "/Articles/UpdateSingle?ran=" + Math.random(), 
   type: "GET", 
   dataType: "json", 
   data: { id: obj.attr("id"), actionName: obj.attr("actionName"), actionValue: obj.attr("actionValue") }, 
   success: function (data) { 
//    if (data.result == "True") { 
//     alert("修改成功!"); 
//    } 
//    if (obj.attr("actionName") == "ArtVerify") { 
 
//    } 
    $(o).html(data[0].name); 
    obj.attr("actionValue", data[0].result); 
   } 
  }) 
 } 
</script> 

以上是在mvc中使用,在webform中怎么使用呢?

在webform中要引用Newtonsoft.Json.dll;

当然你也可以自己拼接字符串。

protected void Page_Load(object sender, EventArgs e) 
  { 
   var customer = new customer { name = "李华", sex = "男" }; 
   var customer1 = new customer { name = "小芳", sex = "女" }; 
   var li = new List<customer>(); 
   li.Add(customer); 
   li.Add(customer1); 
   var list = Newtonsoft.Json.JavaScriptConvert.SerializeObject(li); 
   var tt = "[{\"name\":\"李华\",\"sex\":\"男\"},{\"name\":\"小芳\",\"sex\":\"女\"}]"; 
   //new Newtonsoft.Json.JsonSerializer()..(customer); 
   Response.Write(tt); 
   Response.End(); 
  } 
 
  public class customer 
  { 
   public string name { get; set; } 
   public string sex { get; set; } 
  } 

页面方法:

<p> 
  <a href="javascript:void(0)" onclick="javascript:getJsonData();">GetJsonData</a> 
 </p> 
 <div id="dataDiv"> 
  ggg 
 </div> 
 <script type="text/javascript"> 
  function getJsonData() { 
   var str = ""; 
   $.getJSON("/Json.aspx", function (data) { 
    var tt = ""; 
    $.each(data, function (k, v) { 
     $.each(v, function (kk, vv) { 
      tt += kk + ":" + vv + "<br/>"; 
     }); 
    }); 
    $("#dataDiv").html(tt); 
   }); 
  } 
 </script> 

显示结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

asp.net 页面间传值与跳转的区别

通过Server.Transfer("b.aspx") 与Response.Redirect("b.aspx")的区别
收藏 0 赞 0 分享

ASP.NET Gridview与checkbox全选、全不选实现代码

ASP.NET Gridview checkbox全选与全不选实现代码,其实原理就是利用js来实现的,但需要简单的设置下回传。
收藏 0 赞 0 分享

ASP.NET DropDownList控件的使用方法

ASP.NET DropDownList控件的使用方法,学习asp.net的朋友没用过这个控件的朋友可以参考下。
收藏 0 赞 0 分享

一些.NET对多线程异常处理技巧分享

多线程应用,在实际的项目或产品开发中,原则上来说,应该尽量避免,但是在强调用户体验的要求下或开发平台的限制下(如 Silverlight Socket 通讯),我们不得不用多线程。
收藏 0 赞 0 分享

ASP.NET MVC运行出现Uncaught TypeError: Cannot set property __MVC_FormValidation of null的解决方法

同一相站点,有些页面的客户端验证能工作,而有些死活不行。打开页面就出现Uncaught TypeError: Cannot set property __MVC_FormValidation of null错误
收藏 0 赞 0 分享

asp.net 通用分页显示辅助类(改进版)

在使用ASP.NET编程时,如果不用控件的默认分页功能,想自己搞一个,可以看看本文的asp.net通用分页显示辅助类哦。
收藏 0 赞 0 分享

微软 Visual Studio 2010官方下载地址给大家

昨天VS2010在网上报道都已经发布了,现在今天在网上找到Visual Studio 2010官方下载地址,提供给大家下载。
收藏 0 赞 0 分享

Javascript 直接调用服务器C#代码 ASP.NET Ajax实例

近来总有一些朋友会问到一些入门的问题,把这些问题整理一下,写出来。在以前的文章里,曾经利用纯JS编写过Ajax引擎,在真正开发的时候,大家都不喜欢以这种低效率的方式开发,利用MS Ajax的集成的引擎,可以简单不少工作。
收藏 0 赞 0 分享

ASP.NET 页面刷新的实现方法(包括html,js)

ASP.NET 页面刷新的实现方法,比较全了, 包括html与js下的实现方法。
收藏 0 赞 0 分享

asp.net 无刷新翻页就是这么简单

前两天看了一个自定义分页控件,和AspNetPager一样是实现IPostBackEventHandler接口,不过简洁许多,就想能不能实现ICallbackEventHandler接口做到无刷新分页呢?想到了就马上去做,终于,设想变成了现实!!
收藏 0 赞 0 分享
查看更多