2011-07-23 59 views
2

我有一个强类型视图,包含一个对象Person和一个技能列表。人很简单。我使用Html Helpers这样的@Html.TextBoxFor(m => m.Person.FirstName)。我提交我的表格,并得到我想要的。关于JSON和序列化的问题

问题是我的技能列表。

通过AJAX调用,我得到一个JSON结果,这是一个技能数组。

我应该如何将技巧和人员的组合发送到我的HTTPPOST方法?

我看到两种可能性。

  1. 一个我赞成,但对如何以正确的方式实现不知道:不知何故设法让这个JSON结果到我的视图模型(List<Skill> skilllist),并使用标准的提交按钮,并接受它我的HTTPPOST方法是这样的。 (见在线评论)

    [HttpPost] 
    public ActionResult RegisterPersonAndSkills(PersonSkillViewModel model) 
    { 
        // I can acces the Person object and its properties 
        string firstname = model.Person.FirstName; 
    
        // It would be awesome if I could access the list which used to be a JSONresult 
        string skillname = model.SkillList[0].SkillName 
    
        return null; 
    } 
    
  2. 则尝试转换,序列化一切的形式(Person对象部分)转换成JSON结果,插入的技巧阵列JSON结果我都成系列化视图模型,并通过接收模式模型绑定的方式。与上面的post方法有相同的结果。我再次不确定如何实现这个以及如何处理可能的验证问题。将Person的每个属性序列化为JSON似乎有很多工作,并将Person对象和技能数组添加到JSON PersonSkillViewModel中。

你会如何解决这个问题?

或者是不可能在一个参数中得到两个结果?

回答

2

实现所需结果#1的最简单方法是将您在AJAX调用中收到的技能数组通过隐藏字段客户端添加到DOM。您必须使用默认模型联编程序使用的命名约定(我没有VS打开,但是如果您在GET方法中填充了您的技能数组,并为每个使用Html.HiddenFor添加一个>您应该见语法)。

所以基本上你会需要一些JS来处理JSON请求的客户端,并将其添加到DOM ......这短短的几行使用jQuery,但你没有提到你如何正在获取技能数组Ajax请求。

+0

这正是我所需要的。我对json和模型绑定的想法太多了。谢啦。 – BBQ