asp.net mvc 3 json值不接收控制器

时间:2011-03-22 09:18:34

标签: asp.net-mvc json asp.net-mvc-3

问题是我无法在控制器中收到任何值。什么可能是错的?代码在这里。

  $('#save').click(function () {

        var UserLoginViewModel = { UserName: $('vcr_UserName').val(),
            Password: $('vcr_Password').val()
        };
        $.ajax({
            url: "/User/Login",
            data: JSON.stringify(UserLoginViewModel),
            contenttype: "application/json; charset=utf-8",
            success: function (mydata) {
                $("#message").html("Login");
            },
            error: function () {
                $("#message").html("error");
            },
            type: "POST",
            datatype: "json"
        });
        return false;
    });
});

    [HttpPost]
    public ActionResult Login(UserLoginViewModel UserLoginViewModel)
    {

    }

2 个答案:

答案 0 :(得分:3)

当您使用MVC3时 - 您应该能够利用内置的JSON模型绑定。

您的代码示例有一些拼写错误:contentTypedataType是小写的...(它们应该有一个大写的“T”)

jQuery ajax docs

在您发布正确的contentType / dataType后,MVC应自动将您的对象绑定到发布的JSON。

答案 1 :(得分:1)

你需要一个动作过滤器或类似的来拦截帖子主体的json。

这是一个启动器

Provider Factory

但是这篇文章为我排序On Haacked

如果您知道要预先反序列化的类型,那就太好了,但是如果您需要多态,那么您最终会在动作过滤器中使用这些想法。