本例旨在说明我的一种Controller接收ajax提交(POST)过来的json对象或数组信息的方式,感觉应该有更好的方式,欢迎提出宝贵意见。JSON.stringify(jsonObj)不支持IE8以下浏览器 前端页面代码如下:
复制代码
Controller->Action代码如下(需引用System.IO和System.Web.Script.Serialization命名空间):
复制代码
[HttpPost]
public ActionResult Save()
{
var sr = new StreamReader(Request.InputStream);
var stream = sr.ReadToEnd();
JavaScriptSerializer js = new JavaScriptSerializer();
var list = js.Deserialize<List<Models.SelectList>>(stream);
if (list.Any())
{
foreach (var item in list)
{
}
}
return View();
}
复制代码
SelectList对象类(类这里可以加[Serializable]或者不加,因为没有直接传输或存储SelectList对象,所以我这里没有加)
复制代码
public partial class SelectList
{
public int id { get; set; }
public string name { get; set; }
public string text { get; set; }
}
复制代码
大体思路是将json对象或数组转换为字符串,由前端传入服务端,Request接收,然后使用json反序列化为实体对象。试过action直接加string参数,但进入action后,接收不到传过来的json字串。当然,也可以将json字串直接保存在隐藏域,form提交到服务端获取。
作者: 果冻栋吖
出处:https://www.cnblogs.com/jellydong/p/7117349.html
版权:本站使用「署名 4.0 国际」创作共享协议,转载请在文章明显位置注明作者及出处。