2017-04-24 29 views
0

我爲我的web應用程序創建了2個模型 - 比方說模型A &模型B.我已經設法在單個視圖上顯示兩個模型的數據。我的問題是我只能編輯模型A.如何修改控制器中的編輯方法,以便我可以從同一視圖更新兩個模型?修改編輯方法以更新兩個模型

下面是視圖模型的控制器的編輯方法:

// GET: ABViewModel/Edit/5 
     public async Task<IActionResult> Edit(int? id) 
     { 
      if (id == null) 
      { 
       return NotFound(); 
      } 

      var modelA = await _context.ModelADetails 
       .Include(i => i.ModelBDetails) 
       .AsNoTracking() 
       .SingleOrDefaultAsync(m => m.ID == id); 
      if (vendor == null) 
      { 
       return NotFound(); 
      } 
      return View(modelA); 
     } 

     // POST: ABViewModel/Edit/5 
     [HttpPost, ActionName("Edit")] 
     [ValidateAntiForgeryToken] 
     public async Task<IActionResult> EditPost(int? id) 
     { 
      if (id == null) 
      { 
       return NotFound(); 
      } 

      var modelAToUpdate = await _context.ABViewModel 
       .Include(s => s.ModelBDetails) 
       .SingleOrDefaultAsync(s => s.ID == id); 

      if (await TryUpdateModelAsync<ModelA>(
        vendorToUpdate, 
        "", 
        i => i.FirstName, i => i.LastName, i => i.PhoneNo, i => i.Email) 
      { 
       try 
       { 
        await _context.SaveChangesAsync(); 
       } 
       catch (DbUpdateException /* ex */) 
       { 
        //Log the error (uncomment ex variable name and write a log.) 
        ModelState.AddModelError("", "Unable to save changes. " + 
         "Try again, and if the problem persists, " + 
         "see your system administrator."); 
       } 
       return RedirectToAction("Index"); 
      } 
      return View(modelAToUpdate); 
     } 

這裏的視圖模型:

namespace WebAppProject.Models.ViewModels 
{ 
    public class ModelAandB 
    { 
     public IEnumerable<ModelA> ModelADetails { get; set; } 
     public IEnumerable<ModelB> ModelBDetails { get; set; } 
    } 
} 
+0

如果每個模型都包含在其自己的'

'元素中,則只需將該窗體指向正確的控制器方法即可。如果你想同時調整每個模型的數據,那麼你將需要一個包含其他兩個模型的模型。 –

+0

@SamAxe你的意思是視圖模型?已經有一個 - 請看我更新的帖子。 ModelAandB包含兩個模型的屬性。 –

回答

1

創建視圖模型具有屬性要更新從兩個模型

public class MyViewModel 
{ 
    public string FirstPropFromModel1 {get; set} 
    public string SecondPropFromModel1 {get; set} 
    public string FirstPropFromModel2 {get; set} 
    public string SecondPropFromModel2 {get; set} 
} 

現在你當你的視圖發送這個類的對象,你可以很容易地提取需求d來自此對象屬性的值