2015-10-31 73 views
-1

我正在創建必須具有創建對象(它們的ID,名稱以及與其相關的對象列表)的功能的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

你不應該保存創建對象到一些數據庫?正常的方法是在插入新行時從數據庫生成Id。 –

+2

我沒有看到你在這裏創建對象... – Rob

回答

0

我每次創建新的對象其ID是等於零?什麼是 解決這個問題的最好方法是什麼?

這是合理的,因爲每次你創建一個新的對象時,你都不會更新它的id。具體來說,我可以假設這個id是int,當你獲取表單然後POST它時,你POST的模型的id將是0,因爲默認值int是0.當你POST時你添加新創建的對象列表。您不會將其存儲在數據庫中,檢索相應的ID,然後更新obect的ID。這就是爲什麼id將始終爲0。

Futhermore,我認爲GET應該是這樣的:

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

感謝您的快速回復。我應該怎麼做才能使每個ID都與之前添加的Foo不同? – Simon

0

這是您的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

此鏈接讓我知道你們怎麼面對....堅持下去......你會贏得....

相關問題