我使用JQuery将数据发送到控制器,但控制器没有收到任何数据。
我想发布两个表的数据,这些字段是动态创建的,有些是在html中。
以下是我的代码示例:
{
coursesarray.push($("#coursename").val());
for (var i = 1; i < counter; i++)
{
var courses = $('#coursename' + i).val();
coursesarray.push(courses);
}
obj.tbl_course = coursesarray;
obj.Name = Name;
$.ajax(
{
type: "POST",
datatype: "json",
contenttype: "application/json/",
url: "/Demo/SaveData/",
data: JSON.stringify(obj),
success: savesuccess,
error:saveerror
});
});
控制器方法
public JsonResult SaveData(tbl_name tblobj)
{
db.tbl_name.Add(tblobj);
db.SaveChanges();
foreach (var a in tblobj.tbl_course)
{
db.tbl_course.Add(a);
db.SaveChanges();
}
return Json("success", JsonRequestBehavior.AllowGet);
}
模特是
public partial class tbl_name
{
public int PkId { get; set; }
public string Name { get; set; }
public virtual ICollection<tbl_course> tbl_course { get; set; }
}
和第二个模型是
public partial class tbl_course
{
public int Pkid { get; set; }
public Nullable<int> FkId { get; set; }
public string Coursename { get; set; }
public string CourseTeacher { get; set; }
public virtual tbl_name tbl_name { get; set; }
}
答案 0 :(得分:1)
我有我的班级
public class Customer
{
public string id { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public List<Shop> Shops { get; set; }
public override string ToString()
{
return JsonConvert.SerializeObject(this);
}
}
我的Shop
课程就像这样
public class Shop
{
public string Name { get; set; }
public string Address { get; set; }
public string AddressContd { get; set; }
public ShopContacts ShopContacts { get; set; }
}
我的ShopContacts
类就像一个简单的类,包括fname,lname等属性。
我的控制器方法是这样的
[HttpPost]
public IActionResult Post(Customer Data)
{
...
}
我的jQuery / Ajax是这样的,
var contacts = {
FirstName: $("#firstName").val(),
LastName: $("#lastName").val(),
Email: $("#email").val(),
};
var ShopsData = [{
Name: $("#ptLocAddr").val(),
Address: $("#ptLocAddr").val(),
AddressContd: $("#ptLocAddrContd").val(),
Country: $("#ptLocCountry").val(),
State: $("#ptLocState").val(),
City: $("#ptLocCity").val(),
Zip: $("#zip").val(),
FacilityType: $("#ptFacility").val(),
Radius: $("#ptShopRadius").val(),
ShopContacts: contacts
}]
var Data = {
id: 0,
Shops: ShopsData
}
$.ajax({
"url": "http://localhost:63025/api/values/",
"type": "Post",
"data":Data,
success: function (d) {
console.log(d);
}
})
它按预期工作。在你的情况下,只需在jQuery中使用push()方法添加值,并按照我正在做的方式。
var myArray = [];
在这里你可以执行.each()并将值推送到数组,如下所示:
myArray.push(yourForEachData);
然后
var myData = {
RuleID: $('#hidRuleId').val(),
ProcessDefnID: $('#hidProcessDefnId').val(),
RuleName: $('#txtEditRuleName').val(),
Conditions: Conditions,
...
}
在你的ajax方法中,只需将myData放在数据字段中,就像这样
{
...,
data: myData,
...,
}
就是这样!它肯定会工作。只需更改类名,变量名和属性即可满足您的要求。