0

我正在尝试如下传递淘汰对象,
当我使用 // 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");
    }
4

1 回答 1

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 调用中丢失了它的引用。

于 2013-07-30T23:34:45.857 回答