Knockout对象作为JSon MVC ASP.Net传递给Controller

时间:2013-07-30 23:00:28

标签: ajax json knockout.js

我正试图通过如下击倒对象,
当我使用// ko.utils.postJson传递数据时,没有任何AJAx,数据被传递给我的控制器到“任务”,但当我尝试通过Ajax发布时,我获得任务的空值

   function TaskListViewModel() {
    var self = this;

    self.availableMeals = [
   { UserName: "Standard", UserId: 0 },
   { UserName: "Premium", UserId: 34 },
   { UserName: "Ultimate", UserId: 290 }
    ];


         self.save = function () {

         // ko.utils.postJson(location.href, { task: this.availableMeals }); 


          $.ajax(location.href,{

                data: ko.toJSON({ task: this.availableMeals });,
                type: 'POST',
                dataType:'json',
                contentType: 'application/json',
                success: function (result) { alert(result) }
            });
    };



    }

   ko.applyBindings(new TaskListViewModel());

如下控制器,

    [HttpPost]
    public ActionResult About([FromJson] IEnumerable<UserProfile> task)
    {
          return RedirectToAction("Login","Account");
    }

1 个答案:

答案 0 :(得分:0)

我会尝试更改您的代码,以便在Ajax调用中调用存储的自引用,如下所示:

$.ajax(location.href,{
       data: ko.toJSON({ task: self.availableMeals });,
       type: 'POST',
       dataType:'json',
       contentType: 'application/json',
       success: function (result) { alert(result) }
    });
};

我猜你有一个范围问题,this在你的Ajax调用中失去了它的引用。