jquery - 关于JSON和序列化的问题

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

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

问题是我的技能列表。

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

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

我看到两种可能性。

  1. 我喜欢的一个,但不知道如何以正确的方式实现:以某种方式设法将此 JSON 结果放入我的 View 模型 ( 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 结果数组插入序列化 View 模型中,并通过模型绑定(bind)方式接收模型。与上面 post 方法的结果相同。我再次不确定如何实现这一点以及如何处理可能的验证问题。将 Person 的每个属性序列化为 JSON,并将 Person 对象和技能数组添加到 JSON PersonSkillViewModel 似乎需要做很多工作。

你会如何解决这个问题?

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

最佳答案

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

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

关于jquery - 关于JSON和序列化的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6800469/

相关文章:

javascript - 绑定(bind)事件期间检索到的输入值不正确

javascript - 我的 jquery 自动完成功能不起作用

c# - ASP.NET MVC - 无法将 string[] 值传递给另一个 Controller 操作

javascript - 为什么 [object Object] 提到 "object"两次?

sql - 在 postgres json 字段中查询 json 键

php - 如何在php mysql中获取结果的所有行?

javascript - 是否可以从单独的 .js 文件向 jQuery 对话框添加功能?

jquery - 计算两天之间的天数

c# - 只有在 Kendo Treeview 中显示的扩展项目

c# - SelectedValues 在 MultiSelectList mvc 中不起作用