创建对象的ID始终等于零

时间:2015-10-31 13:10:58

标签: c# asp.net asp.net-mvc

我正在创建必须具有创建对象的功能的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);
        }

2 个答案:

答案 0 :(得分:0)

  

每次创建新对象时,其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);
}

答案 1 :(得分:0)

这就是你的HttpPost Create Controller应该是什么样子

 [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

让我知道你的表现如何......坚持下去......你会赢的......