我试图获得我的观点。我很困惑我该怎么办?请帮助我..我不明白我应该在哪里使用查询和 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>