将列表添加到数据库

时间:2016-03-25 20:02:51

标签: asp.net-mvc asp.net-mvc-5

我正在做一个我有这样的模型的应用程序

public class Saldo
{
    public Saldo()
    {
        Expenses = new List<Expese>();
        Incomes = new List<Income>();
    }

    public int SaldoId { get; set; }
    public List<Expense> Despesas { get; set; }
    public List<Income> Rendimentos { get; set; }
    public string ApplicationUserId { get; set; }
}

我想要做的是在列表中添加一个费用,但它不起作用,当我在控制台上输出计数时它总是为null 在控制器中我这样做:

 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 s = new Balance();
                s.Expense.Add(expense);
                s.ApplicationUserId = userId;
                db.Balance.Add(s);             
            }
            else
            {
                Balance.Expense.Add(expense);
            }

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

费用来自表单并传递给Action

我创建了一个新的Balance实例,它添加了ApplicationUserId,但是列表上的费用没有用,有人可以解释一下为什么会这样吗?

Ps:抱歉我的英文不好

1 个答案:

答案 0 :(得分:1)

也许它只是在翻译中丢失了,但你的模型没有意义。你有一个名为&#34; Despesas&#34;的费用清单。但是在构造函数中,你称之为&#34; Expenses&#34;无论调用哪个列表,您都需要添加费用对象。而不是

s.Expense.Add(expense);

它将是

s.Despesas.Add(expense);