【问题标题】:how do I create records using mvc ef with json?如何使用带有 json 的 mvc ef 创建记录?
【发布时间】:2012-04-30 12:25:59
【问题描述】:

我知道如何从我的 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; }
}

感谢任何帮助。

【问题讨论】:

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


    【解决方案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');});
    

    希望对你有帮助

    【讨论】:

    • 这让我朝着正确的方向前进。我将不得不对第二部分进行一些调整,因为我是从 Android 调用它的,但这个概念似乎很容易实现。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2018-06-17
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多