public class JsonNetResult : ActionResult{ public Encoding ContentEncoding { get; set; } public string ContentType { get; set; } public object Data { get; set; } public JsonSerializerSettings SerializerSettings { get; set; } public Formatting Formatting { get; set; } public JsonNetResult() { SerializerSettings = new JsonSerializerSettings(); } public override void ExecuteResult(ControllerContext context) { if (context == null) throw new ArgumentNullException("context"); HttpResponseBase response = context.HttpContext.Response; response.ContentType = !string.IsNullOrEmpty(ContentType) ? ContentType : "application/json"; if (ContentEncoding != null) response.ContentEncoding = ContentEncoding; if (Data != null) { JsonTextWriter writer = new JsonTextWriter(response.Output) { Formatting = Formatting }; JsonSerializer serializer = JsonSerializer.Create(SerializerSettings); serializer.Serialize(writer, Data); writer.Flush(); } }}
This is an ActionResult I wrote to return JSON from to the browser using .
The benefit of using JsonNetResult over the built in JsonResult is you get a better serializer (IMO [:)]) and all the other benefits of Json.NET like nicely formatted JSON text.
http://james.newtonking.com/json/help/index.html
使用
public JsonNetResult Edit(String elementID, String tableName, String idInElementDetail) { BookElement be = new BookElement(); String inputTemplate = be.getInputTemplateStringByID(elementID, Server.MapPath("~")); JObject outObject = new JObject(); outObject.Add("inputTemplate",new JValue(inputTemplate)); ElementInPage el = new ElementInPage(); DataTable eData = el.getElementInPageDetail(tableName, idInElementDetail); JObject dataObject = new JObject(); foreach (DataRow eRow in eData.Rows) { foreach (DataColumn eCol in eData.Columns) { dataObject.Add(eCol.ColumnName,new JValue(eRow[eCol].ToString())); } } outObject.Add("elementData",dataObject); Debug.WriteLine("outdata:" + outObject.ToString()); JsonNetResult jsonNet = new JsonNetResult(); jsonNet.Data = outObject; return jsonNet; }另外一种 就是JsonResult,这个是这个NewTon JSON包本身就支持的,但这个一般是从Model序列化而来。