私はギャラリー管理システムを開発しましたが、派手なものではなく、2 つのモデルがあります。
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
2 つの外部キーのみを含むテーブルが得られましたが、データを取得しようとすると、Categories プロパティが null に設定された画像オブジェクトが取得されます。なぜだと思いますか?categoryId
imageId
DB からデータを取得するためのコードは次のように単純です。
var images= db.Images.ToList();