我的 View 模型有一个强类型 View ,其中包含一个对象 Person 和一个技能列表。人是很直率的。我像这样使用 Html Helpers @Html.TextBoxFor(m => m.Person.FirstName)
。我提交表格并得到我想要的。
问题是我的技能列表。
通过 AJAX 调用,我得到一个 JSON 结果,它是一个技能数组。
我应该如何将技能和人员的组合发送到我的 HTTPPOST 方法?
我看到两种可能性。
我喜欢的一个,但不知道如何以正确的方式实现:以某种方式设法将此 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; }
尝试将表单(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/