首页 新闻 会员 周边 捐助

asp.net mvc 页面上的一张table数据(就是一个JS数组对象),如何传给后台action?

0
悬赏园豆:30 [已解决问题] 解决于 2015-09-22 17:11

如题,请问前段页面该如何组织JS对象,后台action又如何接收和解析呢?

横槊的主页 横槊 | 初学一级 | 园豆:12
提问于:2015-09-22 10:54
< >
分享
最佳答案
1
 $(function () {
        $("#save").click(function () {
            var list = [];
            for (var i = 0; i < 2; i++) {
                var obj = {};
                obj["Name"] = "Test" + i;
                obj["Age"] = 20 + i;
                list.push(obj);
            }
            
            $.post("@Url.Action("Save")", "list=" + JSON.stringify(list), function (text, status) {
                 alert("Save successfully");
            });
        });
    });

这是前台代码. 如果要使用Json数组传到后台的话. Json数组中的对象里的内容要和实际的类的属性相对应.

例如这里我使用 Obj["Name"] 和 Obj["Age"]. 是因为后台类是这样的。

 public class PersonViewModel
 {
        public string Name { get; set; }
        public int Age { get; set; }

  }

然后后台是这样解析的.

[HttpPost]
public ActionResult Save(string list)
{
      //using Newtonsoft.Json;
      List<PersonViewModel> modelList = JsonConvert.DeserializeObject<List<PersonViewModel>>(list);

      return null;
}
收获园豆:30
李丶GuanYao | 小虾三级 |园豆:1228 | 2015-09-22 11:51
其他回答(2)
0

在前端页面上放置一个HiddenField,赋值给它,后端接收不就行了。至于解析,没有解析JS的引擎怕是没有办法了。

空明流光 | 园豆:111 (初学一级) | 2015-09-22 11:08
0

前端页面有一种类型叫 map类型,并且可以扩展的。键值对。这个你百度一下即可。取值和组织对象。这个你得自己来。和你的实体一样就行。后台控制器里直接用实体接受即可。这里不含验证。如果有必要,验证你得自己做!

大楚打码人 | 园豆:4313 (老鸟四级) | 2015-09-22 11:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册