2017-04-24 16 views
0

Webアプリケーション用に2つのモデルを作成しました。モデルA &モデルBとしましょう。両方のモデルのデータを1つのビューに表示することができました。私の問題はモデル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

各モデルが独自の '

'要素で囲まれている場合は、フォームを正しいコントローラメソッドにポイントするだけです。各モデルのデータを同時に調整する場合は、他の2つのモデルを格納するモデルが必要です。 –

+0

@SamAxeビューモデルを意味しますか?すでに1つあります - 私の更新された投稿をご覧ください。 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値このオブジェクトのプロパティからの値

関連する問題