Asp.net mvc 如何在Asp.net MVC中更新列表视图模型

Asp.net mvc 如何在Asp.net MVC中更新列表视图模型,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,您好,我在MVC中更新记录时遇到问题。我已经创建了一个列表视图模型,我想更新一些记录,但是我得到了一个错误。请帮帮我 这是我的密码: public async Task<bool> AddPurchase(PurchaseOrderViewModel objModel, List<TableViewModel> tableListDto) { using (var txn = context.Database.BeginTransaction())

您好,我在MVC中更新记录时遇到问题。我已经创建了一个列表视图模型,我想更新一些记录,但是我得到了一个错误。请帮帮我

这是我的密码:

public async Task<bool> AddPurchase(PurchaseOrderViewModel objModel, List<TableViewModel> tableListDto)
    {
        using (var txn = context.Database.BeginTransaction())
        {
            bool success = true;
            try
            {
                PurchaseOrder purchase1 = new PurchaseOrder();
                purchase1.LoginID = objModel.LoginID;
                purchase1.SupplierID = objModel.SupplierID;
                purchase1.SupplierName = objModel.SupplierName;
                purchase1.LocationID = objModel.LocationID;
                purchase1.Notes = objModel.Notes;
                purchase1.Currency = objModel.Currency;
                purchase1.TotalQuantity = objModel.TotalQuantity;
                purchase1.TotalAmount = objModel.TotalAmount;
                purchase1.TotalVolume = objModel.TotalVolume;
                purchase1.TotalWeight = objModel.TotalWeight;
                purchase1.TotalLandedCost = Convert.ToDecimal(objModel.TotalCost);
                purchase1.TotalOtherCost = objModel.TotalOtherCost;
                purchase1.Date_Of_Purchase = objModel.Date_Of_Purchase;
                purchase1.Due_Date = objModel.Due_Date;
                purchase1.Date_Arrived = objModel.Date_Arrived;
                purchase1.Date_Departed = objModel.Date_Departed;
                purchase1.CreatedBy = objModel.LoginID;
                purchase1.CreatedOn = objModel.CreatedOn;
                purchase1.UpdatedBy = objModel.LoginID;
                purchase1.UpdatedOn = objModel.UpdatedOn;
                purchase1.Status = StatusConstant.Active;
                context.PurchaseOrders.Add(purchase1);
                await context.SaveChangesAsync();
                success = true;

                int latest = purchase1.PurchaseID;

                PO_Landed_Cost cost = new PO_Landed_Cost();
                cost.LoginID = objModel.LoginID;
                cost.PurchaseID = latest;
                cost.Packaging_Costs = objModel.Packaging_Cost;
                cost.Packaging_Costs_Date_Paid = objModel.Packaging_Costs_Date_Paid;
                cost.Inspection_Costs = objModel.Inspection_Cost;
                cost.Inspection_Costs_Date_Paid = objModel.Inspection_Costs_Date_Paid;
                cost.Freight_And_Duty_Tax = objModel.Freight_Cost;
                cost.Freight_And_Duty_Tax_Date_Paid = objModel.Freight_And_Duty_Tax_Date_Paid;
                cost.Other_Costs = objModel.Other_Cost;
                cost.Total_Landed_Cost = objModel.TotalOtherCost;
                context.PO_Landed_Costs.Add(cost);
                context.SaveChanges();

                OrderDetail order = new OrderDetail();
                PO_Landed_Cost_Spread spread1 = new PO_Landed_Cost_Spread();
                List<DataDisplayViewModel> data = new List<DataDisplayViewModel>();

                if (tableListDto != null)
                {
                    foreach (var item in tableListDto)
                    {
                        //First we take all the basic things

                        var a = Convert.ToDecimal(item.Qty);    //Quantity
                        var b = Convert.ToDecimal(purchase1.TotalQuantity); //Total Quantity
                        var e = Convert.ToDecimal(objModel.TotalOtherCost); //TotalOtherCost
                        var g = Convert.ToDecimal(item.Price);  //Price
                        var j = Convert.ToDecimal(item.Volume);  //Volume
                        var l = Convert.ToDecimal(item.Weight);  //Weight
                        var c = Math.Round(Convert.ToDecimal((a / b) * 100), 2); //Total Percent(Quantity)
                        var f = Math.Round(Convert.ToDecimal(((c * e) / a) / 100), 2); // Quantity Unit Price(Indirect Cost)
                        var h = Math.Round(Convert.ToDecimal(f + g), 2);  //Landed Cost Unit Price (Quantity)
                        var i = Math.Round(Convert.ToDecimal(h * a), 2);  //New Total (Quantity)
                        var k = Math.Round(Convert.ToDecimal(a * j), 2); //Total Volume
                        var m = Math.Round(Convert.ToDecimal(a * l), 2); //Total Weight

                        DataDisplayViewModel datalist = new DataDisplayViewModel();
                        datalist.LoginID = objModel.LoginID;
                        datalist.PurchaseID = latest;
                        datalist.Stock_ID = item.Pid;
                        datalist.Stock_Name = item.ProductName;
                        datalist.Quantity = Convert.ToInt32(item.Qty);
                        datalist.Price = Convert.ToDecimal(item.Price);
                        datalist.Amount = Convert.ToDecimal(item.Amount);

                        datalist.Volume = Convert.ToInt32(item.Volume);
                        datalist.Total_Volume = Convert.ToInt32(k);
                        datalist.Weight = Convert.ToInt32(item.Weight);
                        datalist.Total_Weight = Convert.ToInt32(m);
                        datalist.Total_Percent = Convert.ToString(c);
                        datalist.Indirect_Cost_UnitPrice = Convert.ToString(f);
                        datalist.Landed_Cost_UnitPrice = Convert.ToString(h);
                        datalist.New_Amount = i;
                        data.Add(datalist);
}

                    var totalweight = data.Where(x => x.PurchaseID == latest).Select(x => x.Total_Weight).Sum();
                    var totalvolume = data.Where(x => x.PurchaseID == latest).Select(x => x.Total_Volume).Sum();

                    foreach (var item in tableListDto)
                    {
                        var z = Convert.ToInt32(item.Price);
                        var a = Convert.ToInt32(item.Qty);  //Qty
                        var l = Convert.ToDecimal(item.Weight);  //Weight
                        var j = Convert.ToDecimal(item.Volume);  //Volume
                        var d = Math.Round(Convert.ToDecimal(((a * l) / totalweight) * 100), 2); //Total Percent Of Weight
                        var e = Convert.ToInt32(objModel.TotalOtherCost); //Total Other Cost
                        var f = Math.Round(Convert.ToDecimal(((d * e) / a) / 100), 2);

                        var h = Convert.ToDecimal(a + f);  // Landed Cost Unit Price Of Weight
                        var i = Convert.ToString(h * a);  // New Total Of Weight
                        var m = (a * j / totalvolume) * 100;  //Total Percent Of Volume
                        var o = Math.Round(Convert.ToDecimal(((m * e) / a) / 100), 2);  //Unit Price Of Volume
                        var q = Math.Round(Convert.ToDecimal(z + o), 2); // Landed Cost Unit Price Of Volume
                        var r = Convert.ToInt32(q * a); //New Total Of Volume

                        data.Where(x => x.PurchaseID == latest).FirstOrDefault();
                        data.Where(x => x.PurchaseID == latest).FirstOrDefault().Indirect_Cost_WeightUnitPrice = Convert.ToString(f);
                        data.Where(x => x.PurchaseID == latest).FirstOrDefault().Landed_Cost_WeightUnitPrice = Convert.ToString(h);
                        data.Where(x => x.PurchaseID == latest).FirstOrDefault().New_WeightAmount = Convert.ToDecimal(i);
                        data.Where(x => x.PurchaseID == latest).FirstOrDefault().Total_Percent_Volume = Convert.ToString(m);
                        data.Where(x => x.PurchaseID == latest).FirstOrDefault().Indirect_Cost_VolumeUnitPrice = Convert.ToString(o);
                        data.Where(x => x.PurchaseID == latest).FirstOrDefault().Landed_Cost_VolumeUnitPrice = Convert.ToString(q);
                        data.Where(x => x.PurchaseID == latest).FirstOrDefault().New_VolumeAmount = Convert.ToDecimal(r);
                        context.Entry(data).State = EntityState.Added;
                        context.SaveChanges();
}

                    foreach (var item in data)
                    {
                        order.LoginID = objModel.LoginID;
                        order.PurchaseID = item.PurchaseID;
                        order.Stock_ID = item.Stock_ID;
                        order.Quantity = item.Quantity;
                        order.Price = item.Price;
                        order.Amount = item.Amount;
                        order.CreatedBy = objModel.LoginID;
                        order.CreatedOn = objModel.CreatedOn;
                        order.UpdatedBy = objModel.LoginID;
                        order.UpdatedOn = objModel.UpdatedOn;
                        order.Status = StatusConstant.Active;
                        order.Stock_Name = item.Stock_Name;
                        order.Volume = item.Volume;
                        order.Total_Volume = item.Total_Volume;
                        order.Weight = item.Weight;
                        order.Total_Weight = item.Total_Weight;
                        context.OrderDetails.Add(order);
                        context.SaveChanges();


                        spread1.PurchaseID = item.PurchaseID;
                        spread1.OrderID = order.OrderID;
                        spread1.LoginID = item.LoginID;
                        spread1.Total_Percent = item.Total_Percent;
                        spread1.Indirect_Cost_UnitPrice = item.Indirect_Cost_UnitPrice;
                        spread1.Landed_Cost_UnitPrice = item.Landed_Cost_UnitPrice;
                        spread1.New_Amount = item.New_Amount;
                        spread1.Total_Percent_Volume = item.Total_Percent_Volume;
                        spread1.Indirect_Cost_VolumeUnitPrice = item.Indirect_Cost_VolumeUnitPrice;
                        spread1.Landed_Cost_VolumeUnitPrice = item.Landed_Cost_VolumeUnitPrice;
                        spread1.New_VolumeAmount = item.New_VolumeAmount;
                        spread1.Total_Percent_Weight = item.Total_Percent_Weight;
                        spread1.Indirect_Cost_WeightUnitPrice = item.Indirect_Cost_WeightUnitPrice;
                        spread1.Landed_Cost_WeightUnitPrice = item.Landed_Cost_WeightUnitPrice;
                        spread1.New_WeightAmount = item.New_WeightAmount;
                        context.PO_Landed_Cost_Spreads.Add(spread1);
                        context.SaveChanges();
                    }

                }
                else
                {
                    order.LoginID = objModel.LoginID;
                    order.PurchaseID = latest;
                    order.CreatedBy = objModel.LoginID;
                    order.CreatedOn = objModel.CreatedOn;
                    order.UpdatedBy = objModel.LoginID;
                    order.UpdatedOn = objModel.UpdatedOn;
                    order.Status = StatusConstant.Active;
                    context.OrderDetails.Add(order);
                    context.SaveChanges();

                    PO_Landed_Cost_Spread spread = new PO_Landed_Cost_Spread();
                    spread.LoginID = objModel.LoginID;
                    spread.PurchaseID = latest;
                    spread.OrderID = order.OrderID;
                    context.PO_Landed_Cost_Spreads.Add(spread);
                    context.SaveChanges();

                }

                txn.Commit();

            }
            catch (Exception ex)
            {
                txn.Dispose();
                success = false;
            }
            return success;
        };
    }
public async Task AddPurchase(PurchaseOrderViewModel对象模型,列表tableListDto)
{
使用(var txn=context.Database.BeginTransaction())
{
布尔成功=真;
尝试
{
PurchaseOrder purchase1=新的PurchaseOrder();
purchase1.LoginID=objModel.LoginID;
purchase1.SupplierID=objModel.SupplierID;
purchase1.SupplierName=objModel.SupplierName;
purchase1.LocationID=objModel.LocationID;
purchase1.Notes=objModel.Notes;
purchase1.Currency=objModel.Currency;
purchase1.TotalQuantity=objModel.TotalQuantity;
purchase1.TotalAmount=objModel.TotalAmount;
purchase1.TotalVolume=objModel.TotalVolume;
purchase1.TotalWeight=objModel.TotalWeight;
purchase1.TotalAndCost=Convert.ToDecimal(objModel.TotalCost);
purchase1.TotalOtherCost=objModel.TotalOtherCost;
purchase1.Date_Of_Purchase=objModel.Date_Of_Purchase;
purchase1.Due_Date=objModel.Due_Date;
purchase1.Date_Arrived=objModel.Date_Arrived;
purchase1.Date_defeed=objModel.Date_defeed;
purchase1.CreatedBy=objModel.LoginID;
purchase1.CreatedOn=objModel.CreatedOn;
purchase1.UpdatedBy=objModel.LoginID;
purchase1.UpdatedOn=objModel.UpdatedOn;
purchase1.Status=StatusConstant.Active;
context.PurchaseOrders.Add(purchase1);
wait context.saveChangesSync();
成功=真实;
int latest=purchase1.PurchaseID;
采购订单到岸成本=新采购订单到岸成本();
cost.LoginID=objModel.LoginID;
cost.PurchaseID=最新;
cost.Packaging_Costs=objModel.Packaging_cost;
cost.Packaging_Costs_Date_Paid=objModel.Packaging_Costs_Date_Paid;
cost.Inspection_Costs=objModel.Inspection_cost;
cost.Inspection_Costs_Date_Paid=objModel.Inspection_Costs_Date_Paid;
成本.运费和关税=objModel.运费成本;
成本、运费、关税、纳税日期、已付=objModel、运费、关税、纳税日期、已付;
cost.Other_cost=objModel.Other_cost;
cost.Total_Landed_cost=objModel.TotalOtherCost;
上下文。采购订单成本。添加(成本);
SaveChanges();
OrderDetail订单=新的OrderDetail();
采购订单卸货成本价差1=新采购订单卸货成本价差();
列表数据=新列表();
if(tableListDto!=null)
{
foreach(tableListDto中的var项)
{
//首先,我们把所有基本的东西都拿走
var a=转换为具体(项目数量);//数量
var b=Convert.ToDecimal(purchase1.TotalQuantity);//总数量
var e=Convert.ToDecimal(objModel.TotalOtherCost);//TotalOtherCost
var g=Convert.ToDecimal(item.Price);//Price
var j=Convert.ToDecimal(item.Volume);//Volume
var l=Convert.ToDecimal(item.Weight);//Weight
变量c=数学舍入(转换为小数((a/b)*100),2);//总百分比(数量)
var f=数学圆整(转换为小数((c*e)/a)/100),2);//数量单价(间接成本)
var h=数学圆(转换为小数(f+g),2);//到岸成本单价(数量)
var i=Math.Round(Convert.ToDecimal(h*a),2);//新总数(数量)
var k=Math.Round(Convert.ToDecimal(a*j),2);//总体积
var m=Math.Round(Convert.ToDecimal(a*l),2);//总重量
DataDisplayViewModel datalist=新的DataDisplayViewModel();
datalist.LoginID=objModel.LoginID;
datalist.PurchaseID=最新版本;
datalist.Stock_ID=item.Pid;
datalist.Stock\u Name=item.ProductName;
datalist.Quantity=转换为32(项目数量);
datalist.Price=Convert.ToDecimal(item.Price);
datalist.Amount=Convert.ToDecimal(item.Amount);
datalist.Volume=Convert.ToInt32(item.Volume);
datalist.Total_Volume=转换为32(k);
datalist.Weight=Convert.ToInt32(item.Weight);
datalist.Total_Weight=换算成32(m);
datalist.Total_Percent=转换为字符串(c);
datalist.Indirect_Cost_UnitPrice=Convert.ToString(f);
datalist.Landed\u Cost\u UnitPrice=Convert.ToString(h);
datalist.New_Amount=i;
数据。添加(数据列表);
}
var totalweight=data.Where(x=>x.PurchaseID==latest)。选择(x=>x.Total_Weight.Sum();
var totalvolume=data.Where(x=>x.PurchaseID==latest)。选择(x=>x.Total_Volume.Sum();
foreach(tableListDto中的var项)
{
var z=转换为32(项目价格);
变量a=转换为32(项目数量);//数量
var l=Convert.ToDecimal(item.Weight);//Weight
var j=Convert.ToDecima