2016-03-25 28 views
0

bir nesne eklemek Cant:Böyle bir modele sahip listemde

public class Balance 
{ 
    public int BalanceId { get; set; } 
    public List<Expense> Expenses { get; set; } 
    public List<Income> Incomes { get; set; } 
    public string ApplicationUserId { get; set; } 
} 

bu model 2 modeller Gider ve Gelir 2 listesi vardır.

Yani ben istediğim burada Denetleyici'de bunu gerçekleştirmeye çalışacağız Gider ve im benim Listesine bir Gider eklemektir:

public ActionResult Create([Bind(Include = "ExpenseId,TipoDespesaId,DespesaDescricao,DespesaValor,TipoPagamentoId,Data,Comentario")] Expense expense) 
    { 
     var userId = User.Identity.GetUserId(); 
     if (ModelState.IsValid) 
     { 

      var balance = db.Balance.Where(d => d.ApplicationUserId == userId).FirstOrDefault(); 


      expense.ApplicationUserId = userId; 

      if (balance == null) 
      { 
       Balance b = new Balance(); 
       s.Expense.Add(expense); 
       s.ApplicationUserId = userId;    
      } 
      else 
      { 
       balance.expense.Add(despesa); 
      } 

      db.Despesas.Add(expense); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     ViewBag.TipoDespesaId = new SelectList(db.TipoDespesas.Where(m => m.ApplicationUserId == userId), "TipoDespesaId", "TipoDespesaNome", despesa.TipoDespesaId); 
     ViewBag.TipoPagamentoId = new SelectList(db.TipoPagamentos.Where(m => m.ApplicationUserId == userId), "TipoPagamentoId", "TipoPagamentoNome", despesa.TipoPagamentoId); 
     return View(despesa); 
    } 

Hata buradadır:

if (balance == null) 
    { 
     Balance b = new Balance(); 
     s.Expense.Add(expense); 
     s.ApplicationUserId = userId;    
    } 

"Nesne başvurusu bir nesnenin örneğine ayarlanmadı" diyor Birisi neyi yanlış yaptığımı anlamak için bana yardımcı olabilir

Ps: Kötü ingilizcem için özür dilerim ama daha fazlasını öğrenmek istiyorum

cevap

0

Liste özelliklerinizi başlatmanız gerekiyor. Bunu yapmanın kolay bir yolu varlığın yapıcı içinde: ben zaten benim model üzerinde bir liste varsa ben ne yapıyorum anlamaları için başlatılıyor olmadan dont iş neden

public class Balance 
{ 
    public Balance() 
    { 
     Expenses = new List<Expense>(); 
     Incomes = new List<Income>(); 
    } 

    public int BalanceId { get; set; } 
    public List<Expense> Expenses { get; set; } 
    public List<Income> Incomes { get; set; } 
    public string ApplicationUserId { get; set; } 
} 
+0

Hmmm, beni açıklayabilirim, neden Dengesini neden başlatmam gerekiyor? Yeni başlayanlar soruları için özür dileriz –

+0

'Giderler 'siz başlatılana kadar boştur. Yukarıda gösterildiği gibi kurucuda başlatılmadıkça, "Dengesi" nin bir örneğini oluşturmak, özelliklerini başlatmaz. – jrummell

+0

Harika, iyi bir açıklama teşekkür ederim :) –

İlgili konular