从淘汰模型序列化到C#MVC模型类

时间:2013-07-17 07:19:42

标签: json asp.net-mvc-4 serialization knockout.js asp.net-web-api

-----淘汰js代码------------

var User = function () {
    this.UserName = ko.observable();
    this.Password = ko.observable();
};


var LoginViewModel = function () {
    var self = this;
    this.LoginName = '';
    this.Password = '';
    this.errorvisible = ko.observable(false);

    this.User = ko.observable(new User());
    this.returnurl = '<%: Url.Action("Home","Home") %>';
    this.Login = function () {
        $.ajax({
            url: '../api/LoginApi/',
            contentType: "Application/Json , UTF-8",
            dataType: 'json',
            type: 'POST',
            data: ko.toJson(self.User()),
            success: function (data) {
                var result = data.ID;
                if (result == 400) {
                    self.errorvisible(true);
                } else {
                    self.errorvisible(false);
                    window.location.href = self.returnurl;
                }
            },
            error: function () {
                alert('failed');
            }
        });
    };

};
ko.applyBindings(new LoginViewModel());

------用户模型类-------------------

 public class User
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
        public string Password { get; set; }
        public string UserName { get; set; }
    }


  public void Post(User value)
  {
      //This is the post method  the webAPI which should get the values of properties in User class
  } 

当调试器命中Post方法时用户类实例为Null(即Value为Null)    而不是像UserName和Password

这样的属性中的值

1 个答案:

答案 0 :(得分:0)

您的内容类型contentType: "Application/Json , UTF-8",错误。

应该是:

contentType: 'application/json; charset=utf-8'

或只是简单地说:

contentType: 'application/json'

没有正确的内容类型Wep.API无法正确处理您的请求,因此您获得了null参数。