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
表:categoryId
和imageId
,但是當我嘗試恢復數據,我得到的圖像對象與分類屬性設置爲空,任何想法爲什麼?
從DB拉低數據的代碼也很簡單:
var images= db.Images.ToList();
你想根據選定的分類替換當前分類還是想添加到圖像的當前分類? (另外,你能否檢查一下拼寫) –