如何使用带有json的mvc ef创建记录?

时间:2012-04-19 01:33:16

标签: asp.net-mvc json entity-framework

我知道如何从我的MVC应用程序获取json格式的数据(见下文)

    public JsonResult Index()
    {
        return Json(db.Publications, JsonRequestBehavior.AllowGet);
    }

create方法会是什么样子?编辑?

我猜它看起来像下面的

    [HttpPost]
    public void Create(Publication publication)
    {
        try
        {
            db.Publications.Add(publication);
            db.SaveChanges();
        }
        catch
        {
            // what do I catch?
        }
    }

如果是这种情况,我的JSON调用会是什么样的?

(假设Publication类如下所示)

public class Publication
{
    public int Id { get; set; }
    public String Title { get; set; }
}

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

对于索引,您可能会遇到一些异常,因为EF对象具有许多您在客户端不需要的属性,并且会抛出循环引用异常。

您必须创建一个新的POCO类来“包装”存储库返回的实体,或者只是按照此处的建议使用匿名对象:

Serialize Entity Framework objects into JSON

即:

return Json(db.Publications.Select(p => new {Id = p.Id, Title = p.Title}), JsonRequestBehavior.AllowGet);

然后,从客户端使用Json的调用必须看起来像这样(假设您使用的是JQuery):

$.post('/controller/create', {id:$('#idField').val(), name:$('#nameField').val()}, function(){alert('Publication created');});

希望这有帮助