获取 mvc 实体模型中字段的总计 1st



我试图获得我的观点。我很困惑我该怎么办?请帮助我..我不明白我应该在哪里使用查询和 ofc,我需要在我的视图中显示它,但如何显示?

模型类

    namespace BOL1
{
  public  class ADetailsVm
    {
        public List<BOL1.tbl_Transiction> Payables { get; set; }
        public List<BOL1.tbl_Transiction> Reciveables { get; set; }
    }
}

数据库上下文

    public partial class bankingEntities : DbContext
    {
        public bankingEntities()
            : base("name=bankingEntities")
        {
        }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
        public virtual DbSet<tbl_Accounts> tbl_Accounts { get; set; }
        public virtual DbSet<tbl_Transiction> tbl_Transiction { get; set; }
        public virtual DbSet<tbl_TransictionType> tbl_TransictionType { get; set; }
        public DbSet<ADetailsVm> ADetailsVm { get; set; }
    }
}

控制器

 public class Details : Controller
    {
        private TransictionBs objbs;
        public Details() 
        {
            objbs = new TransictionBs();
        }
        // GET: Shinwari/AccountDetails
        [HttpGet]
        public ActionResult Index(int accountid)
        {
            ADetailsVm v = new ADetailsVm();
            //Load both the collection properties
            v.Payables = objbs.GetALL().Where(p => p.AId == accountid && p.tbl_TransictionType.Type.Contains("Payable")).ToList();
            v.Reciveables = objbs.GetALL().Where(r => r.AId==accountid && r.tbl_TransictionType.Type.Contains("Reciveable")).ToList();
            return View(v);

视图

@model BOL1.ADetailsVm
@{
    ViewBag.Title = "Index";
}
<h2>AccountDetails</h2>
<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table id="Payables" class="table">
    <tr>
        <th>
            Date
        </th>
        <th>
            Discription
        </th>
        <th>
            Amount
        </th>
    </tr>
    @foreach (var item in Model.Payables)
    {
        <tr>
            <td>
                @item.Date
            </td>
            <td>
                @item.TDiscription
            </td>
            <td>
                @item.Amount
            </td>
        </tr>
    }
</table>

视图模型的 Payables 集合属性的 Amount 属性(假设它是数字类型)使用 LINQ Sum 扩展方法。

<h2> @Model.Payables.Sum(s=>s.Amount) </h2>

或者,如果您不喜欢在 razor 视图中添加太多 C# 代码(像我一样 :)),您可以添加一个新属性以将总数存储在视图模型中。

public  class ADetailsVm
{
    public decimal TotalPayableAmount { set;get;}
    public List<BOL1.tbl_Transiction> Payables { get; set; }
    public List<BOL1.tbl_Transiction> Reciveables { get; set; }
}

在操作方法中,调用 Sum 方法并将值设置为我们的新TotalPayableAmount属性。

public ActionResult Index(int accountid)
{
    var v = new ADetailsVm();
    v.Payables = objbs.GetALL().Where(p => p.AId == accountid &&
                               p.tbl_TransictionType.Type.Contains("Payable")).ToList();
    v.Reciveables = objbs.GetALL().Where(r => r.AId == accountid && 
                            r.tbl_TransictionType.Type.Contains("Reciveable")).ToList();
    v.TotalPayableAmount=  v.Payables.Sum(s=>s.Amount)
    return View(v);
}

在您看来

@model ADetailsVm
<h2>@Model.TotalPayableAmount</h2>

最新更新