0
我有一个控制器(历史)中的创建操作,它从另一个表(资产)接收ID的参数。交叉控制器更新
一旦视图返回数据以创建新的历史记录,我还需要它更新资产表中的一个字段。
我不确定实现此目标的最佳做法。创建操作可以/应该在另一个控制器上调用编辑操作,还是应该//访问历史记录控制器中的资产模型并使用LINQ表达式进行更新。
我有一个控制器(历史)中的创建操作,它从另一个表(资产)接收ID的参数。交叉控制器更新
一旦视图返回数据以创建新的历史记录,我还需要它更新资产表中的一个字段。
我不确定实现此目标的最佳做法。创建操作可以/应该在另一个控制器上调用编辑操作,还是应该//访问历史记录控制器中的资产模型并使用LINQ表达式进行更新。
我已工作使用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();
}
请让我知道,如果你认为这是一个黑客位的,有一个更好的办法。