【发布时间】:2015-10-22 05:11:22
【问题描述】:
r我需要一些关于在哪里对数据进行计算的建议。
我有一个视图模型,其中包含我的计算所需的所有字段,我为我的一个计算创建了以下内容:
public class CommissionVM
{
public int? LoanAmountLock { get; set; } // from loan table
public decimal BranchRev { get; set; } // from revenue table
public decimal BranchProcessFee { get; set; } // from revenue table
public decimal BranchGrossTotal
{
get
{
return Convert.ToDecimal(LoanAmountLock * (BranchRev/ 100) + BranchProcessFee);
}
}
}
我尝试在我的视图中使用 Model.BranchGrossTotal,但它返回 0。我认为我有一个操作顺序问题。值 LoanAmountLock、BranchRev 和 BranchProcessFee 作为查询结果返回:
public ActionResult Reconcile(int? id, string RevenueLoanType)
{
var model = new CommissionVM()
{
Loan = db.Loan.FirstOrDefault(a => a.id == id ),
BranchRevenues = db.BranchRevenues.FirstOrDefault(a => a.RevenueLoanType == RevenueLoanType),
};
return View(model);
}
在我用查询填充视图模型后,我最初能够通过在控制器中进行所有数学运算来使这些计算工作,但将有大约 10 次计算,据我了解,我不应该弄乱我的具有业务逻辑的控制器。
对此最好的解决方案是什么?我需要为计算创建另一个类吗?如果是这样,我如何用我的数据填充该类并在我的控制器中使用它?
编辑:我不确定如何设置业务类并在控制器中使用它们。谁能指出我的教程方向?
【问题讨论】:
-
查看此链接,它可能对您的业务逻辑设计有所帮助:stackoverflow.com/questions/1015813/…
-
我不喜欢在我的视图模型上进行计算——你不能在其他地方轻松地重用计算,而且更难测试和调试。创建一个单独的类来执行业务逻辑——Luis 的回答有一个很好的例子。
标签: c# asp.net-mvc asp.net-mvc-5.1