C# 同时向同一模型项ASP.NET Core中插入两行数据

C# 同时向同一模型项ASP.NET Core中插入两行数据,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,是否可以在相同的模型项中以相同的形式添加数据,但像这样添加不同的数据 请参见我随附的屏幕截图中的Kodeakunmodel项。对不起,我的英语不好 我的模型课: public class Transaksi { [Key] public int Id { get; set; } public string Kodeakun { get; set; } public string Keterangan { get; set; } [DataType(Dat

是否可以在相同的模型项中以相同的形式添加数据,但像这样添加不同的数据

请参见我随附的屏幕截图中的
Kodeakun
model项。对不起,我的英语不好

我的模型课:

public class Transaksi
{
    [Key]
    public int Id { get; set; }
    public string Kodeakun { get; set; }
    public string Keterangan { get; set; }

    [DataType(DataType.Date)]
    public DateTime Tanggal { get; set; }

    [DisplayFormat(DataFormatString = "{0:C2}", ApplyFormatInEditMode = false)]
    public decimal Debit { get; set; }

    [DisplayFormat(DataFormatString = "{0:C2}", ApplyFormatInEditMode = false)]
    public decimal Kredit { get; set; }
}
我的控制器:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Id,Kodeakun,Keterangan,Tanggal,Debit,Kredit")] Transaksi transaksi)
{
        if (ModelState.IsValid)
        {                               
            var debit = new Transaksi
            {
                Kodeakun = transaksi.Kodeakun,
                Keterangan = transaksi.Keterangan,
                Tanggal = transaksi.Tanggal,
                Debit = transaksi.Debit,
                Kredit = 0
            };

            var kredit = new Transaksi
            {
                Kodeakun = transaksi.Kodeakun,
                Keterangan = transaksi.Keterangan,
                Tanggal = transaksi.Tanggal,
                Debit = 0,
                Kredit = transaksi.Kredit
            };

            _context.Add(debit);
            _context.Add(kredit);

            await _context.SaveChangesAsync();

            return RedirectToAction(nameof(Index));
        }
}
[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务创建([Bind(“Id,Kodeakun,Keterangan,Tanggal,Debit,Kredit”)]Transaksi Transaksi)
{
if(ModelState.IsValid)
{                               
var借方=新交易
{
Kodeakun=transaksi.Kodeakun,
凯特兰根=transaksi.凯特兰根,
Tanggal=transaksi.Tanggal,
借方=交易借方,
Kredit=0
};
var kredit=新的Transaksi
{
Kodeakun=transaksi.Kodeakun,
凯特兰根=transaksi.凯特兰根,
Tanggal=transaksi.Tanggal,
借方=0,
Kredit=transaksi.Kredit
};
_上下文。添加(借方);
_添加(kredit);
wait_context.SaveChangesAsync();
返回重定向到操作(名称(索引));
}
}
以下是截图:

我的结局是这样的:


是的,您可以通过制作一个
ViewModel
并在其中添加
Transaksi
类的两个属性来实现这一点

public class TransactionVM
{
    public Transaksi First {get; set;}
    public Transaksi Second {get; set;}
}
现在在Create视图中,您可以绑定
TransactionVM
model,而不是
Transaksi
model。现在,您的create方法签名应该如下所示

public async Task<IActionResult> Create(TransactionVM transaction)
公共异步任务创建(TransactionVM事务) 你可以通过
transaction.First
transaction.Second

很抱歉,在处理请求时发生了一个未经处理的异常。NullReferenceException:对象引用未设置为对象的实例。您是否将您的创建视图与
TransactionVM
绑定,并正确命名输入字段?@David Budiman您的创建方法签名应与我在上述答案中提供的签名类似。不要在参数中添加
[Bind]
注释。