将匿名对象发布到MVC Action

时间:2018-05-17 06:48:41

标签: jquery asp.net-mvc

我正在创建一个MVC应用程序,我需要公开一个需要2个参数的Action。第一个参数将是字符串类型,第二个参数将是一个对象。基于第一个参数值,我将解析该对象。我正在尝试做这样的事情

客户端

function SaveLookup() {
    debugger;
    var userData = {};
    userData.lookupType = "Users";
    userData.objLookup = { "UserID": 1, "UserCode": "XYZ", "FirstName": "FName", "LastName": "LNAme", "IsActive": "1", "UserRole": "2" };
    $.ajax({
        url: '/home/SaveLookup',
        dataType: 'json',
        type: 'POST',
        contentType: 'application/json;charset=utf-8',
        data: JSON.stringify(userData),
        success: function (result) {
            debugger;
            $("#partialviews").html(result);
        },
        error: function (xhr) {
            debugger;
            alert(xhr);
        }
    });
}

服务器端

[HttpPost]
    public JsonResult SaveLookup(string lookupType, object objLookup)
    {

        if (lookupType == "Users")
            User uObject = JsonConvert.DeserializeObject<User>(objLookup);
        else if (lookupType == "xyz")

        return Json("");
    }

我能够读取第一个参数值,但无法解析该对象。我试过反思但没有运气。

3 个答案:

答案 0 :(得分:1)

试试这个并看看。

var itemsSerialized = JsonConvert.SerializeObject(objLookup);
User uObject = (User)JsonConvert.DeserializeObject<User>(itemsSerialized);

答案 1 :(得分:0)

@Mohd Ansari,在您的客户端脚本中似乎有问题。

将客户端用作

function SaveLookup() {
    debugger;
    var userData = {};
    userData.lookupType = "Users";
    userData.objLookup =  JSON.stringify({ "UserID": 1, "UserCode": "XYZ", "FirstName": "FName", "LastName": "LNAme", "IsActive": "1", "UserRole": "2" });
  //  console.log(JSON.stringify(userData));
    $.ajax({
        url: '/home/SaveLookup',
        dataType: 'json',
        type: 'POST',
        contentType: 'application/json;charset=utf-8',
        data: JSON.stringify(userData),
        success: function (result) {
            debugger;
        },
        error: function (xhr) {
            debugger;
            alert(xhr);
        }
    });
}

,您的控制器代码应为

    [HttpPost]
    public JsonResult SaveLookup(string lookupType, string objLookup)
    {
        User uObject = new User();
        if (lookupType == "Users")
           uObject =JsonConvert.DeserializeObject<User>(objLookup);
        return Json("");
    }

让我知道逻辑对你有用吗?

答案 2 :(得分:0)

尝试(使用动态public JsonResult SaveLookup(string lookupType, dynamic objLookup)