我仍在尝试了解如何将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');
}
});
答案 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>
发表您的观点......这对我有用......