【问题标题】:Posting array to mvc controller via ajax with knockoutjs通过带有knockoutjs的ajax将数组发布到mvc控制器
【发布时间】:2017-10-20 01:12:33
【问题描述】:

我在将数组发布到我的控制器时遇到问题。我正在发送一个项目列表,并且在项目中有一组组。即使我发布的 sendData 变量有数组,数组值在控制器中也显示为 null。

这是我要发布的数据。在这种情况下,变量数据是"[{"id":"123456789","firstName":"John","lastName":"Doe","UserGroups":["1","2"]}]"

我的用户模型:

 [Display(Name = "SSO")]
[Required]
        public virtual string ID { get; set; }

        [Display(Name = "First Name")]
        [Required]
        public string FirstName { get; set; }

        [Display(Name = "Last Name")]
        [Required]
        public string LastName { get; set; }

        [Display(Name = "User Group(s)")]
        public UserGroupModels[] UserGroup { get; set; }

组模型。你会注意到一对多的关系

public class UserGroupModels
    {
        public int ID { get; set; }

        public string MAMUserGroup { get; set; }
    }

AJAX 调用。你会注意到我也在使用 KnockoutJS

self.save = function (form) {


    sendData = ko.toJSON(self.users);//value is "[{"id":"123456789","firstName":"John","lastName":"Doe","UserGroups":["1","2"]}]"


    $.ajax({
        url: '/Users/CreateMultiple',
        contentType: 'application/json',
        async: true,
        traditional: true,
        type: 'POST',
        dataType: 'json',
        data: sendData,
        error: function (jqXHR, textStatus, errorThrown) {
            console.log("FAIL: ");
            alert("ERROR: " + errorThrown)
            hidePleaseWait();
        },
        success: function (response) {
            hidePleaseWait();
            console.log(response.alreadyExistList);

这是我的控制器

public async Task<ActionResult> CreateMultiple(List<User> users)
        {do something...}

当我查看 List&lt;User&gt; user 的本地变量时,我看到数组中的用户组数量正确(在本例中为 2),但每个值都是空的。例如users[0].UserGroups[0]=nullusers[0].UserGroups[1]=null

【问题讨论】:

  • 正如 Kevin 在下面所说的那样,您实际上只是将字符串数组传递给控制器​​,而不是 UserGroupModels 对象的 JSON。

标签: c# ajax asp.net-mvc knockout.js


【解决方案1】:

您的 UserGroups json 数组中的项目应该是对 UserGroupModels 类建模的对象。

"UserGroups":[{"ID":"1"},{"ID":"2"}]

【讨论】:

  • 好的,现在尝试让 Knockoutjs 正确格式化它。会让你知道结果。
猜你喜欢
  • 2016-06-12
  • 2016-03-28
  • 1970-01-01
  • 1970-01-01
  • 2013-03-24
  • 2015-01-31
  • 2011-10-30
  • 2012-05-10
  • 2012-11-26
相关资源
最近更新 更多