C# 如何在多个模型之间计算参数?asp.NETMVC

C# 如何在多个模型之间计算参数?asp.NETMVC,c#,asp.net,asp.net-mvc,model,controller,C#,Asp.net,Asp.net Mvc,Model,Controller,我有多个模型,我试图计算一个名为total的参数。我是MVC新手,不知道该怎么做,也不知道该在哪里做(鉴于这是肯定的,不应该这么做) 我有这个参数,我必须计算: public class Bill { public int Total { get; set; } } 通过使用这些参数: public class Article { public int Price { get; set; } public float Quantity { get; set; } } 而且: pu

我有多个模型,我试图计算一个名为total的参数。我是MVC新手,不知道该怎么做,也不知道该在哪里做(鉴于这是肯定的,不应该这么做)

我有这个参数,我必须计算:

public class Bill
{
public int Total { get; set; }
}
通过使用这些参数:

public class Article
{
   public int Price { get; set; }
   public float Quantity { get; set; }
}
而且:

public class BillLine
{
   public int DiscountValue { get; set; }
}

总数是用这3个值计算出来的,但我真的不知道怎么做。该程序的工作原理如下:每个billLine可以有一个文章,一个bill可以有多个bill line。

您需要通过组合所有三个类来创建一个ViewModel,使用它可以轻松地进行所有计算

要开始使用ViewModel,请参考以下链接


也许您的视图模型应该如下所示:

public class BillLine
{
   public int DiscountValue { get; set; }
   public Article Article {get; set; }
}

public class Bill
{
    public List<BillLine> Lines { get; set;}
    public int Total { get 
    {
       int result;
       foreach var line in Lines {
           //Update result with your calculations 
       }
       return result;
    }
   }
}
公共类广告牌
{
公共整数折扣值{get;set;}
公共物品文章{get;set;}
}
公共课条例草案
{
公共列表行{get;set;}
公共整数总计{get
{
int结果;
foreach var行中的行{
//使用您的计算更新结果
}
返回结果;
}
}
}

根据我的理解,我有以下代码:考虑到
数量
指的是不应该是整数的项目,价格是浮动属性
TotalArticlePrice
是一个计算属性

public class Article
{
    public float Price { get; set; }
    public int Quantity { get; set; }


    public float TotalArticlePrice
    {
        get
        {
            return Price * Quantity;
        }

    }
}
正如您所提到的,一个BillLine有一篇文章,因此模型应如下所示,带有
Article
属性和
FinalBillLinePrice
,其计算值减去折扣值

public class BillLine
{
    public int DiscountValue { get; set; }
    public Article Article { get; set; }

    public float FinalBillLinePrice
    {
        get
        {
            return Article.TotalArticlePrice - DiscountValue;
        }

    }
}
最后,, 正如您提到的,一张
账单
可能有多张
账单行
,因此模型应如下所示,其中
Total
属性存储账单总价

public class Bill
{
    public float Total
    {
        get
        {

            return BillLineList.Sum(x => x.FinalBillLinePrice);

        }

    }
    public List<BillLine> BillLineList { get; set; }
}
公共类法案
{
公众浮动总额
{
得到
{
返回BillLineList.Sum(x=>x.FinalBillLinePrice);
}
}
公共列表BillLineList{get;set;}
}

如果我有任何误解,请在评论中简要说明。

您的解决方案似乎是最好的!我现在面临的唯一问题是旧数据库不想更新,即使我删除它并创建一个新的数据库也不想更新update@RedDevil:谢谢。如果它解决了问题,请将其标记为答案。.您是否使用任何ORM(实体Frmework)并面临更新数据库的问题。如果是这样,您可以提出一个单独的问题,其中包含详细信息和错误。:)我设法更新了它,但现在它不想获取我正在进行这些计算的文件的初始值设定项数据,即文章、账单行和账单。我设法再次进行了更新,但它仍然显示了我以前在初始值设定项中硬编码的旧总值。。。我删除了数据库并重新创建了它…更新了它,它仍然向我显示那些不再存在的值…这看起来是映射(EF)问题。很难分析实际的问题在哪里……请您发布一个详细的查询,其中包含映射和初始值设定项的代码。