将JSON对象发布到MVC控制器并检索IEnumerable类型

时间:2016-09-29 22:52:37

标签: jquery asp.net json ajax asp.net-mvc

我想从我的AJAX中检索一个JSON,其格式为

{ID_USER : ID_INSTRUCTION}

我的JSON结果:

[{"658":"81"},{"658":"82"},{"658":"90"},{"658":"101"}]

这是我的代码jQuery for post AJAX:

$("#boutton-add").on('click',function (e) {
    e.preventDefault();
    var newFormData = [];
    var usr = $('.usr_id').attr('id');
    jQuery('.tab_inst tr[name="inst"]').each(function (i) {
        var tb = jQuery(this);
        var obj = {};
        tb.find('button[name="delete"]').each(function () {
                obj[usr] = this.id;
        });
        if (obj[usr] != null)
            newFormData.push(obj);
    });
    var jsonresult = JSON.stringify(newFormData); // object return instruction of user after removing and adding informations 

    //alert(jsonresult);

    //----------------------ajax to posting json to actionresult

    $.ajax({
        type: 'POST',
        url: '/Usr_Inst/set_user_inst/',
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        data: jsonresult,
        traditional: true,
        success: function (data) {
            alert(jsonresult);
        }
    });
});

现在一切顺利。

现在我想在我的USER_INSTRUCTION表中添加或删除具有两列ID_USER和ID_INSTRUCTION的程序,为此,我需要一个参数为IEnumerable <USER_INSTRUCTION>的ActionResult方法。

public ActionResult set_user_inst(IEnumerable<USER_INSTRUCTION> jsonresult)
{
    // adding or removing programs.
}

我的模型类就像:

[Table("DPH.USER_INSTRUCTION")]

public partial class USER_INSTRUCTION
{
    [Key]
    public decimal ID_USER { get; set; }
    public decimal ID_INSTRUCTION { get; set; }

    public virtual INSTRUCTION INSTRUCTION { get; set; }
    public virtual USERS USER { get; set; } }

项目运行时我从参数中的MVC控制器获得的值是ID_USER = 0 an ID INSTRUCTION = 0

1 个答案:

答案 0 :(得分:1)

您将以下键值对发布到服务器,但您尝试将其绑定到IEnumerable<string>

[{ "658": "81" }, { "658": "82" }, { "658": "90" }]

根据方法参数IEnumerable<string>,您希望将数据保存到客户端的数组中,如此["81" ,"82" , "90" ],并将其发布到服务器。

- 或 -

您发布以下JSON,并将其绑定到服务器上的强类型模型。

的Json

[{ "Number": "81" }, { "Number": "82" }, { "Number": "90" }]

模型

public class UserModel
{
    public string Number { get; set; }
}

行动方法

[HttpPost]
public ActionResult SetUserInst(IEnumerable<UserModel> collection)
{
    // C# Method name should start with Capital.
    return View();
}