【问题标题】:Question about JSON and Serialization关于 JSON 和序列化的问题
【发布时间】:2011-07-23 12:50:15
【问题描述】:

我的视图模型有一个强类型视图,其中包含一个对象 Person 和一个技能列表。人很直接。我使用像 @Html.TextBoxFor(m => m.Person.FirstName) 这样的 Html Helpers。我提交表单并得到我想要的。

问题是我的技能列表。

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

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

我看到了两种可能性。

  1. 我喜欢的,但不知道如何以正确的方式实现: 不知何故设法将此 JSON 结果放入我的视图模型 (List<Skill> skilllist) 并使用标准提交按钮和像这样在我的 HTTPPOST 方法中接收它。 (见内联 cmets)

    [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 似乎需要做很多工作。

你会如何解决这个问题?

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

【问题讨论】:

    标签: jquery asp.net-mvc json asp.net-mvc-3 model-binding


    【解决方案1】:

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

    所以基本上你需要一些 JS 来处理 JSON 请求客户端并将其添加到 DOM...这只是 Jquery 的几行,但你没有提到你是如何获得技能数组 Ajax 请求的.

    【讨论】:

    • 这正是我所需要的。我想太多关于 json 和模型绑定。谢谢老兄。
    猜你喜欢
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多