最近, 论坛上很多人发如何传值的贴子, 于是写一个留底吧:
一、构建后台实体类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace WebApplication1
{
public class MainInfo
{
public int MainId { get; set; }
public string MainName { get; set; }
public List<ItemInfo> ItemList { get; set; }
}
public class ItemInfo
{
public int ItemId { get; set; }
public DateTime AddTime { get; set; }
public string ItemName { get; set; }
}
}
二、前端页面:
<script type="text/javascript">
function save() {
var info = {
MainName: "Mary",
MainId: 100
};
info.ItemList = [];
info.ItemList.push({ ItemId: 1, ItemName: "m1", AddTime: "2018-11-28" });
info.ItemList.push({ ItemId: 2, ItemName: "m2", AddTime: "2018-11-29" });
$.ajax({
url: "AJAX.ashx",
data: { info: JSON.stringify(info) },
dataType: "json",
async: false,
success: function (json) {
alert(json.msg);
}
});
}
</script>
<input type="button" value="Submit" onclick="save()" />
三、用一般处理程序( ashx 文件,无aspx生命周期,效率高 , 如果 mvc 可直接用 action 方法) 来接收:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace WebApplication1
{
/// <summary>
/// Handler1 的摘要说明
/// </summary>
public class AJAX : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string str = context.Request["info"];
MainInfo info = Newtonsoft.Json.JsonConvert.DeserializeObject<MainInfo>(str);
var r = new {
success = info != null,
msg = info != null ? "成功": "失败"
};
context.Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(r));
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
最终, 点击后,前端页面弹出“成功”。