创建的对象的ID始终等于零

本文关键字:等于零 ID 对象 创建 | 更新日期: 2023-09-27 18:20:04

我正在创建web应用程序,该应用程序必须具有创建对象的功能(它们的id、名称和与其相关的对象列表)。每次我创建一个新对象时,它的id是否等于零?解决这个问题的最佳方法是什么?

我的控制器:

 // GET: Foo/Create
        public ActionResult Create()
        {
            return View();
        }
        // POST: Foo/Create
        [HttpPost]
        public ActionResult Create(Foo foo)
        {
            try
            {
                var list = (List<Foo>)Session["list_foo"];
                if (list != null)
                {
                    list.Add(foo);
                }
                else
                {
                    list = new List<Foo>();
                    list.Add(foo);
                }
                Session["list_foo"] = list;
                return RedirectToAction("List");
            }
            catch
            {
                return View();
            }
        }
public ActionResult List()
        {
            var model = Session["list_foo"];
            return View(model);
        }

创建的对象的ID始终等于零

每次我创建一个新对象时,它的id是否等于零?什么是解决这个问题的最佳方法?

这是合理的,因为每次创建新对象时,都不会更新它的id。具体来说,正如我可以假设的那样,id将是int,当您获取表单并对其进行POST时,您POST的模型的id将是0,因为int的默认值是0。POST时,将新创建的对象添加到列表中。您不将其存储在数据库中,检索相应的id,然后更新obect的id。这就是为什么id总是0。

此外,我认为GET应该是这样的:

public ActionResult Create()
{ 
    var model = new Foo();
    return View(model);
}

这就是HttpPost创建控制器应该看起来像的样子

 [HttpPost]
    public ActionResult Create(Foo foo)
    {
        try
        {
            var _objddContext = new DBContext();
            if (_objdBentityContext != null)
            {
                _objdBentityContext.FoosEntity.Add(foo);
            }
            else
            {
                _objdBentityContext.FoosEntity = new FoosEntity();
                _objdBentityContext.FoosEntity.Add(foo);
            }
            _objdBentityContext.FoosEntity.SaveChanges()
            return RedirectToAction("List");
        }
        catch
        {
            return View();
        }
    }

应该有一个DBContext类,用于保存和关联所有实体这就是初始化并保存foo数据的类。您可以在下方查看此链接

http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/CodeFirst/index.html

让我知道你过得怎么样。。。。坚持下去…你会赢的。。。。