控制器的JSON对象列表

时间:2016-04-28 09:55:12

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

我仍在尝试了解如何将JSON对象列表发送到控制器以将数据保存在SQL服务器数据库表'Invitees'中。

一个例子非常有用。

JSON:

[{Email :"e@g.com",Presence :"nodig"},{Email :"h@g.com",Presence :"gewenst"}]

型号:

public class Invitee
{
    public int Id { get; set; }
    public int AppId { get; set; }
    public string Email { get; set; }
    public string Presence { get; set; }
};

Controller :(模型返回null exeption,ModelState = true)

[HttpPost]
public JsonResult InviteeSave(List<Invitee> model)
{
    if (ModelState.IsValid)
    {
        using (var db = new MainDbContext())
        {
            var dbInv = db.Invitees.Create();

            foreach (var inv in model)
            {
                dbInv.AppId = 35;
                dbInv.Email = inv.Email;
                dbInv.Presence = inv.Presence;

                db.Invitees.Add(dbInv);
            }

            db.SaveChanges();
        }
    }
    else
    {
        ModelState.AddModelError("", "Something went wrong");
    }
    return Json(model);
}

jQuery ajax:

$.ajax({
    url: '@Url.Action("InviteeSave", "App")',
    dataType: "json",
    type: "POST",
    accept: 'appication/json; charset=utf-8',
    cache: false,
    data: JSON.stringify(jsonData),
    success: function (data) {
        if (data.success) {
            alert("Met succes !");
        }
    },
    error: function (xhr) {
        alert('error');
    }
});

2 个答案:

答案 0 :(得分:0)

抱歉,您无法发送用户定义类型的集合(列表)。 有一个工作。

将控制器参数类型设为

  

C#的DataTable类型

然后通过ajax发布你的数据。它对我有用。

$.ajax({
        type: "POST",
        url: "URL/api/.....",
        data: {Email :"e@g.com",Presence :"nodig"},{Email :"h@g.com",Presence :"gewenst"},
    }).done(function( data ){ 
         console.log(data) 
 });

我目前正在使用我的网络应用

编辑: 你可以发帖列表;字符串到控制器参数列表也是如此。然后你可以相应地对你的数据进行排序。

答案 1 :(得分:0)

不,您可以将项目集合发送到控制器发布操作方法。

[HttpPost]
public JsonResult InviteeSave(List<Invitee> model)
{
    //Your code goes here
}

JS: //(url:应该是actionname,控制器以防你使用@ Url.Action()或者只是给url:'/ controller / method /')

$.ajax({
            url: "InviteeSave",
            dataType: "json",
            type: "POST",
            contentType: 'application/json; charset=utf-8',
            cache: false,
            data: JSON.stringify({ model: jsonData }),
            success: function(data) {
                if (data.success) {
                    alert("Met succes !");
                }
            },
            error: function(xhr) {
                alert('error' + 'Came here');
            }
        });

我的观点是

<form id="frmInvitee" action="javascript:void(0)">
    <input type="submit" name="BtnSumbit" id="BtnSumbit" />
</form>

发表您的观点......这对我有用......