2014-09-25 150 views
0

我有一個控制器(歷史)中的創建操作,它從另一個表(資產)接收ID的參數。交叉控制器更新

一旦視圖返回數據以創建新的歷史記錄,我還需要它更新資產表中的一個字段。

我不確定實現此目標的最佳做法。創建操作可以/應該在另一個控制器上調用編輯操作,還是應該//訪問歷史記錄控制器中的資產模型並使用LINQ表達式進行更新。

回答

0

我已工作使用LINQ選項:

public ActionResult Create([Bind(Include = "ServiceID,AssetID,Date,ContractorID,Notes")] ServiceHistory serviceHistory) 
{ 
    if (ModelState.IsValid) 
    { 
     db.ServiceHistories.Add(serviceHistory); 

     // Upadte Next Service Date 
     var query = from r in db.Assets 
       where r.AssetID == serviceHistory.AssetID 
       select r; 

     foreach (Asset r in query) 
     { 
      int freq = (int)r.ServiceFrequency; 
      r.NextServiceDate = DateTime.Now.Date.AddMonths(freq); 
     } 
     db.SaveChanges(); 

     return RedirectToAction("Details", "Assets", new { id = serviceHistory.AssetID }); 
    } 

    ViewBag.AssetID = new SelectList(db.Assets, "AssetID", "Description", serviceHistory.AssetID); 
    return View(); 

} 

請讓我知道,如果你認爲這是一個黑客位的,有一個更好的辦法。