从mvc 4中的控制器,我使用实体框架从数据库中的模型中请求一组对象:
[HttpPost]
public ActionResult RequestDbObjects()
{
List<MyObjectType> objCollection;
using (DataContext context = new DataContext())
{
objCollection= context.MyObjects.Where(o => o.TypeId == 1).OrderBy(k => k.Name).ToList();
}
return Json(objCollection);
}
型号:
[Table("MyObjects")]
public class MyObjectType
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Description { get; set; }
[Required]
[ForeignKey("Type")]
public int TypeId { get; set; }
public virtual Type Type{ get; set; }
}
[Table("Type")]
public class Type
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)]
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
在视图中,使用脚本:
function recollectData() {
$.ajax({
url: "/Controller/RequestDbObjects/",
type: 'POST',
success: function (dataCollection) {
for(var obj in dataCollection)
{
var value = dataCollection[obj];
}
},
error: function () {
alert('Cannot retrieve the data');
}
});
};
在上面的控制器中,首先我调用控制器中的操作,该操作使用实体框架从数据库请求数据,然后从返回到脚本的对象列表中,我想迭代它们,并且每个他们阅读了一些属性并做了一些事情,但我不知道该怎么做。想听吗?
答案 0 :(得分:1)
您的成功处理程序返回数据。如果它是JSON对象,您可以像这样阅读:
success: function (data) {
for(var property in data) {
var value = data[property];
}
}
如果你返回一个数组:
success: function (data) {
for(var i=0; item=data[i]; i++) {
}
}
答案 1 :(得分:1)
您必须返回一个ActionResult,而不是List:
[HttpPost]
public ActionResult RequestDbObjects()
{
List<MyObjectType> objCollection;
using (DataContext context = new DataContext())
{
objCollection= context.MyObjects.Where(o => o.TypeId == 1).OrderBy(k => k.Name).ToList();
}
return Json(objCollection);
}