我正在创建必须具有创建对象的功能的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);
}
答案 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
让我知道你的表现如何......坚持下去......你会赢的......