首页 新闻 赞助 找找看

ASP.NET MVC Action接收多个复合参数问题

0
悬赏园豆:10 [已解决问题] 解决于 2015-12-02 13:19

示例:前端脚本:

 1 <script type="text/javascript">
 2     $(document).ready(function () {
 3         $('#send').click(function () {
 4             var first = { Id: 1, Name: '张三' };
 5             var second = { Id: 2, Name: '李四' };
 6 
 7             $.post('@Url.Action("Receive")', {
 8                 first: first,
 9                 second: second
10             }, function (data, status) {
11                 alert(data);
12             });
13         });
14     });
15 </script>

后台代码:

    public class Person
    {
        public int Id { get; set; }

        public string Name { get; set; }
    }
1 public ActionResult Receive(Person first, Person second)
2 {
3 
4      return Content("OK.");
5 }

接收不到数据...请教各位有什么简单方法解决这个问题

_天光云影的主页 _天光云影 | 初学一级 | 园豆:70
提问于:2015-12-02 11:14
< >
分享
最佳答案
0

$.post的时候别直接 { first: first, second: second },这样试试 JSON.stringify({ first: first, second: second })

 

而且后台接收两个Person,前台ajax调用可能也会有问题,可改成后台接收List<Person>

收获园豆:10
webaspx | 小虾三级 |园豆:1973 | 2015-12-02 11:44

Action 参数List为null 。。。这个

_天光云影 | 园豆:70 (初学一级) | 2015-12-02 12:29

@_天光云影: 后台接收List<Person>,前台传的时候也得改,

var arrUsers=new Array(first,second);

$.post的时候传入 JSON.stringify(arrUsers),这样试试

webaspx | 园豆:1973 (小虾三级) | 2015-12-02 13:05

@webaspx: 

晕,这样还是不行。

不过,根据你提示的函数JSON.stringify(),我搜到了下面文章

http://juristr.com/blog/2011/08/posting-json-data-to-aspnet-mvc-3-web/

前端用 $.ajax()方法,后台方法定义 Action (Person first, Person second)

这样是行得通的。

_天光云影 | 园豆:70 (初学一级) | 2015-12-02 13:18

@webaspx: 

还是非常感谢你的帮助哈

_天光云影 | 园豆:70 (初学一级) | 2015-12-02 13:18
其他回答(1)
0

你为什么要往action里传object啊,直接传ID,然后根据Id查不行吗?

HandsCool | 园豆:4 (初学一级) | 2015-12-02 11:42

这个示例可能不太恰当,后台数据没有Id的,无法查到

支持(0) 反对(0) _天光云影 | 园豆:70 (初学一级) | 2015-12-02 11:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册