這是目前我的方案,個人覺得還蠻輕巧自在的。 Controller負責把要輸出的資料序列成json。
Html.ActionUrl 這隻method原來的MVC Toolkit沒有,我隨手加的。
我 是用Newtonsoft.Json作物件序列成JSON,那為什麼不用MS Ajax內建的 System.Web.Script.Serialization.JavaScriptSerializer 來做,是因為他將DateTime序列成字串格式,Client 端無法直接取用。Newtonsoft.Json的部份我也是小改一點,讓他可以做Value Type 的序列化,可參考。
附帶一提,我是架在iis 5.1上測試,本來看到 IIS 6.0 和 ASP.NET 3.5 / VS 2008 的相容性測試,己為會很困難的,大概是測MVC Web Project比較單純吧,裝完 .NET Framework 3.5 再裝 ASP.NET 3.5 Extensions Preview (是的,目前只是preview版),直接就ok了。
線上
範例下載
底 下的流程 Controller(AjaxTest) -> View(AjaxPage) -> Controller(Ajax, id=1) -> View(AjaxPage) 取得json ->Controller(Ajax, id=2) -> View(AjaxPage) 取得json -> end ,大概是這樣。(如果畫成圖會比較漂亮吧)
ControllerBase.cs
public class ControllerBase : Controller {
public void RenderJSON(object obj) {
string jsonString = Newtonsoft.Json.JavaScriptConvert.SerializeObject(obj);
Response.Clear();
Response.ContentEncoding = Encoding.UTF8;
Response.ContentType = "application/json";
Response.Write(jsonString);
Response.Flush();
Response.End();
}
}
HomeController.cs
public class HomeController : ControllerBase {
[ControllerAction]
public void AjaxTest() {
RenderView("AjaxPage");
}
[ControllerAction]
public void Ajax(int id) {
switch (id) {
case 1:
RenderJSON(DateTime.Now.ToString());
break;
case 2:
Order[] orders = new Order[] {
new Order() {PK=1, Title="B001", OrderDate = DateTime.Now},
new Order() {PK=2, Title="A003", OrderDate = DateTime.Now}
};
RenderJSON(orders);
break;
case 3:
int n1,n2;
int.TryParse(Request["n1"],out n1);
int.TryParse(Request["n2"],out n2);
RenderJSON(n1 + n2);
break;
}
}
}
}
AjaxPage.aspx
<script language="javascript" type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.2.1.min.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
var actionUrl1 = '<%=Html.ActionUrl("ajax", "/1") %>';
var actionUrl2 = '<%=Html.ActionUrl("ajax", "/2") %>';
var actionUrl3 = '<%=Html.ActionUrl("ajax", "/3") %>';
$("#link1").click(function() {
$.getJSON(actionUrl1, { }, function(json){
alert("Server Time: " + json);
});
});
$("#link2").click(function() {
$.getJSON(actionUrl2, { }, function(json){
alert("total " + json.length.toString() + " records");
for(var i=0;i<json.length;i++) {
alert(json[i].PK + ", " + json[i].Title + ", " + json[i].OrderDate);
}
});
});
$("#t1,#t2").change(function() {
$.getJSON(actionUrl3, { "n1": $("#t1").val(),"n2": $("#t2").val() }, function(json){
$("#t3").val(json.toString());
});
});
});
</script>
<h3>
Ajax Page</h3>
<ol>
<li><a id="link1" href="#">Get Server Time</a></li>
<li><a id="link2" href="#">Return Object</a></li>
<li>
<input type="text" name="t1" id="t1" maxlength="4" style="width: 40px" />
+
<input type="text" name="t2" id="t2" maxlength="4" style="width: 40px" />
=
<input type="text" name="t3" id="t3" maxlength="4" readonly="readonly" style="width: 40px" />
</li>
</ol>
分享到:
相关推荐
json对象格式转化,最新版本 Newtonsoft.Json.dll 欢迎大家使用。不需要任何分
Newtonsoft.Json.Net 4.0下载.rar
Newtonsoft.Json.dll 这文件有很多版本,这是.net3.5能用的版本。
可以下载NetServ.Net.Json.dll,Newtonsoft.Json.dll,RouteDebug.dll,System.Web.Mvc.dll,System.Web.Routing.dll等DLL文件
Newtonsoft.json C# Json转Xml 或 Xml转Json 支持框架.net Framework4.0
Newtonsoft.Json.dll(.NET2.0_3.5_4.0_4.5) using Newtonsoft.Json; //DataTable转json public string DtToJson(DataTable table) { string jsonString = string.Empty; jsonString = JsonConvert....
基于Newtonsoft.Json精简的。.Net2.0的哦 仅保留了读取和解析json数据的相关类和方法(JsonReader,JsonSerializer),去除了写入json数据以及json和xml互相转换的部分以及其他不常用的类。 编译后dll仅20kb 也可以直接...
Newtonsoft.json.dll v12.0.3 for .net全版本
Newtonsoft.Json dotnet框架4.0版,官方原版下载,珍藏版,确实是.net framework的4.0版支持32和64位操作系统
Newtonsoft.Json.dll 官网下载,各个。net版本; 2017年6月份官网下载的,官网下载好慢,所以在这里提供
newtonsoft.json.dll文件v4.0 x86 x64 版本齐全 最新版 Newtonsoft.Json.dll 可以对json对象格式转化,提供最新版本Newtonsoft.Json.dll,用来解析json字符串很方便。
Newtonsoft.Json.Net2.0 .net3.5 .net4.0 .net4.5 包含Newtonsoft.Json.Net的各个版本.net2.0、.net3.5、.net4.0、.net4.5、Portable、Portable40、WinRT。Newtonsoft .Json.dll 在C#中使用格式化json特别方便。
Newtonsoft.Json 3.5 适用于.net3.5框架
Newtonsoft.Json,使用教程:https://skode.blog.csdn.net/article/details/93474066
在.NET CF3.5中使用Newtonsoft.Json.JsonConvert.SerializeObject方法序列化List,报错:不支持 Open Generic 方法的 GetParameters。可以使用35r8版本解决。包含其他Json35r8版本带源码文档
Newtonsoft.json组件
newtonsoft.json各个版本
Newtonsoft.Json.dll仅支持.Net Framework 4.0 用于json字符串解析。 Newtonsoft.Json.dll仅支持.Net Framework 4.0
Newtonsoft.Json.dll仅支持.Net Framework 2.0 用于json字符串解析。 Newtonsoft.Json.dll仅支持.Net Framework 2.0
已到2019年了居然会回到过去用VS2008开发WinCE6.0软体,我用的WebApi, 开发,调试环境搭建好之后,遇到JSON序列化及反序列化的问题(用的Newtonsoft.Json.Compact.dll), 刚开始简单序列化数据传入到服务端没有...