C# - 如何在 MVC 中将数据库 ASP.NET 特定记录显示到视图
本文关键字:NET 记录 显示 视图 ASP 数据库 MVC | 更新日期: 2023-09-27 18:36:42
好的,所以我创建了我的数据库,该数据库由 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 - 我正在使用带有 ASP.NET 和MVC模板(C#)的Visual Studio Community 2015
因此,
基本上您需要一个视图模型,该模型具有最高捐赠金额记录和所有捐赠记录的属性。因此,让我们创建一个。
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 笔最高捐款,而不仅仅是 1 笔捐款,请将DonationListVm
的Highest
属性更改为收藏
public class DonaltionListVm
{
public List<DonationVm> Highest { set;get;}
public List<DonationVm> All { set;get;}
}
并在您的操作方法中使用 Take 方法获取 3 个项目。
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);
在您的视图中,您需要遍历 Highest
属性并显示每个项目的金额和注释