2013-10-23 37 views
0

我公司開發的圖庫管理系統,沒有什麼花哨完全復原,它有兩種型號:MVC4對象不是從上下文

public class Category 
{ 
    [Key] 
    public int Id { get; set; } 

    [Display(Name = "שם קטגוריה")] 
    [Required(ErrorMessage="אנא הכנס שם קטגוריה", AllowEmptyStrings=false)] 
    public string Name { get; set; } 

    [Display(Name = "הצג")] 
    [Required(ErrorMessage="אנא בחר האם להציג קטגוריה)")] 
    public bool Display { get; set; } 

    public List<Image> Images { get; set; } 
} 

public class Image 
{ 
    [Key] 
    public int Id { get; set; } 

    [Display(Name="שם תמונה")] 
    [Required(ErrorMessage="אנא בחר שם תמונה")] 
    [MaxLength(50)] 
    public string Name { get; set; } 

    [Display(Name="נתיב קובץ")] 
    [Required(ErrorMessage="אנא בחר נתיב לתמונה")] 
    public string FilePath { get; set; } 

    [Display(Name = "תיאור תמונה")] 
    [MaxLength(150)] 
    public string Description { get; set; } 

    [Display(Name = "הצג")] 
    [Required] 
    public bool Display { get; set; } 

    [Display(Name = "קטגוריות")] 
    //[Required(ErrorMessage="אנא בחר קטגוריה")] 
    public List<Category> Categories { get; set; } 

    [Display(Name = "נתיב דף פייסבוק")] 
    public string FacebookPage { get; set; } 

} 

現在的控制器:

private CakesContext db = new CakesContext(); 

    public ActionResult EditImage(int id = 0) 
    { 
     Image image = db.Images.Find(id); 
     if (image == null) 
     { 
      return HttpNotFound(); 
     } 

     ViewBag.Categories = db.Categories.ToList(); 

     return View(image); 
    } 

    // 
    // POST: /Categories/Edit/5 

    [HttpPost] 
    public ActionResult EditImage(Image image, FormCollection fc) 
    { 
     var categoriesString = string.IsNullOrEmpty(fc["categories"].ToString()) ? "" : fc["categories"].ToString(); 

     var chosenCategories = splitCategoriesString(categoriesString); 
     if (chosenCategories == null || chosenCategories.Count == 0) 
     { 
      ModelState.AddModelError("עליך לבחור לפחות קטגוריה אחת", new Exception()); 
     } 

     ModelState.Remove("Categories"); 

     if (ModelState.IsValid) 
     { 
      image.Categories = chosenCategories; 
      db.Entry(image).State = EntityState.Modified; 
      db.SaveChanges(); 
      return RedirectToAction("ImageList"); 
     } 
     return View(image); 
    } 

之前,我SaveChanges我調試以及圖像中包含的所有數據,包括所選擇的類別(由於這個原因,我排除了這些視圖,直到這一點)。

現在奇怪的事情,當我檢查表中的數據是存在的,我只包含兩個外鍵一個CategoryImages表:categoryIdimageId,但是當我嘗試恢復數據,我得到的圖像對象與分類屬性設置爲空,任何想法爲什麼?

從DB拉低數據的代碼也很簡單:

var images= db.Images.ToList(); 
+0

你想根據選定的分類替換當前分類還是想添加到圖像的當前分類? (另外,你能否檢查一下拼寫) –

回答

相關問題