好的,所以我创建了我的数据库,其中包含6行:
现在这是有效的,我使用局部视图将其显示在我的视图上。我坚持的部分是显示特定记录。我想要做的是在我的数据库中显示与我的数据库中的enitre记录相同的视图中的三条记录。在顶部将是这三个记录然后一个单独的表将具有所有记录。原因是因为我希望在视图上显示最高的捐赠(金额)。我首先不知道如何在经过数小时的研究后显示特定记录,其次是显示最高记录。
以下代码将帮助您了解更多信息:
控制器
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using CharitySite.Models;
namespace CharitySite.Controllers
{
public class CharitiesController : Controller
{
private CharityDBContext db = new CharityDBContext();
// GET: Charities
public ActionResult Index()
{
return View(db.Donations.ToList());
}
型号
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
namespace CharitySite.Models
{
public class Charity
{
public int ID { get; set; }
public string DisplayName { get; set; }
public DateTime Date { get; set; }
public Double Amount { get; set; }
public Double TaxBonus { get; set; }
public String Comment { get; set; }
}
public class CharityDBContext : DbContext //controls information in database
{
public DbSet<Charity> Donations { get; set; } //creates a donation database
}
}
查看
@model IEnumerable<CharitySite.Models.Charity>
@{
ViewBag.Title = "Index";
}
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Content("~/Content/bootstrap.css")" rel="stylesheet" type="text/css" />
<div id="header">
<h1>Syria</h1>
<h4>DONATIONS</h4>
</div>
<div class="half-col">
@Html.Partial("_Database", Model);
</div>
简单来说,我需要的是:
到处研究这个但我找不到任何东西,为什么我来这里问你们是否有人知道解决这个问题的方法。
P.S - 我正在使用Visual Studio Community 2015和ASP.NET以及MVC模板(C#)
答案 0 :(得分:1)
所以基本上你需要一个视图模型,它具有最高捐赠金额记录和所有捐赠记录的属性。所以,让我们创建一个。
public class DonationVm
{
public decimal Amount { set;get;}
public string DisplayName { set;get;}
public string Comment { set;get;}
}
public class DonationListVm
{
public DonationVm Highest { set;get;}
public List<DonationVm> All { set;get;}
public DonationListVm()
{
this.Highest = new DonationVm();
this.All = new List<DonationVm>();
}
}
在您的GET操作方法中,创建一个DonationListVm
对象,为这两个属性加载数据并传递给视图。您可以通过Amount属性执行降序操作,并获取第一条记录以获取最高金额的记录。
public ActionResult Index()
{
var vm=new DonationListVm();
var all =db.Donations.OrderByDescending(s=>s.Amount);
if(all.Any())
{
//Get the highest amount record
var h = all.First();
vm.Highest.Name=h.Name;
vm.Highest.Amount = h.Amount;
vm.Highest.Comment = h.Comment;
}
//Get all the records
vm.All=all.Select(x=>new DonationVm { Amount=x.Amount,
Comment=x.Comment,
DisplayName =x.DisplayName}).ToList();
return View(vm);
}
现在,您的视图应该强烈输入我们的新视图模型
@model DonationListVm
<h2>Highest</h2>
<p>@Model.Highest.Amount</p>
<p>@Model.Highest.DisplayName</p>
<h3>All donations</h3>
@foreach(var item in Model.All)
{
<p>@item.DisplayName - @item.Amount</p>
}
如果您想要显示3个最高捐款而不只是一个,请将Highest
的{{1}}属性更改为集合
DonationListVm
并在您的操作方法中使用Take方法获取3个项目。
public class DonaltionListVm
{
public List<DonationVm> Highest { set;get;}
public List<DonationVm> All { set;get;}
}
并且在您看来,您需要遍历var vm=new DonationListVm();
vm.All=db.Donations.Select(x=>new DonationVm { Amount =x.Amount,
Comment =x.Comment,DisplayName=x.DisplayName }).ToList();
//sort based on amount then take top 3 records
vm.Highest=cm.All.OrderByDescending(y=>y.Amount).Take(3)
.Select(a=>new DonationVm { Amount=a.Amount,
Comment=a.Comment,
DisplayName=a.DisplayName}).ToList();
return View(vm);
属性并显示每个项目的金额和评论