Asp.net mvc 2 淘汰赛和MVC2:将模型发送给控制器

Asp.net mvc 2 淘汰赛和MVC2:将模型发送给控制器,asp.net-mvc-2,knockout.js,Asp.net Mvc 2,Knockout.js,我在将json从敲除发送到mvc2控制器操作时遇到问题。 以下是我的看法: var ViewModel = { FirstName: ko.observable("FirstName"), LastName: ko.observable("LastName"), Save: function () { ko.utils.postJson(location.href, this);

我在将json从敲除发送到mvc2控制器操作时遇到问题。 以下是我的看法:

var ViewModel = {
            FirstName: ko.observable("FirstName"),
            LastName: ko.observable("LastName"),
            Save: function () {
                ko.utils.postJson(location.href, this);
            }
}
ko.applyBindings(ViewModel);
我在控制器中有一个操作:

public virtual ActionResult SomeAction(MyModel model) {
        //do smth
        return View(registrationModel);
}
public class MyModel {
   public string FirstName {get;set;}
   public string LastName {get;set;}
}
问题是我得到的字符串值被引用,比如“\”FirstName\”,我知道有某种方法可以避免这种情况(在MVC3中使用JSON.stringify)。 我尝试了以下方法:

ko.utils.postJson(location.href, JSON.stringify({model: this});

在所有这3个选项中,我得到model=null,或者控制器中的所有值都为null


也许以前有人这样做过?

我发现为了让MVC对象映射工作,您需要将文章的内容类型设置为“application/json;charset=utf-8”。我以前从未使用过ko.utils.postJson()实现这一点,但这里有一个使用jQuery的工作示例:

    $.ajax({
        url: url,
        type: "POST",
        data: ko.toJSON(ViewModel),
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (response) {
        },
        error: function (response, errorText) {
        }
    });

注意,我正在使用
ko.toJSON
将模型序列化为JSON。

我发现为了使MVC对象映射工作,您需要将POST的内容类型设置为“application/JSON;charset=utf-8”。我以前从未使用过ko.utils.postJson()实现这一点,但这里有一个使用jQuery的工作示例:

    $.ajax({
        url: url,
        type: "POST",
        data: ko.toJSON(ViewModel),
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (response) {
        },
        error: function (response, errorText) {
        }
    });
注意,我使用
ko.toJSON
将模型序列化为JSON

    $.ajax({
        url: url,
        type: "POST",
        data: ko.toJSON(ViewModel),
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (response) {
        },
        error: function (response, errorText) {
        }
    });