2011-09-04 41 views
0

我有一個項目模型和技能模型的模型,MVC實體框架,編輯,查看與外鍵

該項目具有一對多的關係,我有一個問題搞清楚技能

如何做編輯actionmethod的項目,

當項目目標是通過MVC實例化,技能集合爲null,在視圖中我顯示覆選框,並需要添加,並從這個集合

我想刪除我需要加載從數據庫項目,然後映射修改的字段,然後保存,這是正確的方式去了嗎?有沒有比手動做更好的方法?

在此先感謝。

​​

回答

1

嘗試爲您的項目創建ViewModel並使用它來填充視圖中的技能和項目。

例如

public class ProjectViewModel 
{ 
    public Project Project {get; set;} 
    public List<Skills> Skills { get; set;} 
} 

然後在你控制器

public ActionResult Edit(int id){ 
    var model = new ProjectViewModel 
    { 
     Project = YourContext.Projects.SingleOrDefault(x=>x.ProjectId == id), 
     Skills = YourContext.Skills.ToList() 
    }; 
    return View(model); 
} 

[HttpPost] 
public ActionResult Edit(ProjectViewModel model){ 
    if (ModelState.IsValid){ 

     //now you can use skills from the ViewModel 
     foreach(Skill s in model.Skills){ 
      //you should now have skill value. 
0

我有同樣的問題,我想這樣的 我的外鍵的產品ID,你需要把它綁定包括列表 控制器;

public ActionResult EditTextProperty([Bind(Include = "Id,ProductID,Name,Description,Value,CreateDate,ModifyDate,IsHaveNectar")] PVM_TextProperty TextProperty) 
     { 
      if (ModelState.IsValid) 
      { 
       db.Entry(TextProperty).State = EntityState.Modified; 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 
      return View(TextProperty); 
     } 

,並通過隱藏屬性一樣, 觀把它從視圖。

@Html.HiddenFor(model => model.ProductID) 

感謝