2016-02-29 141 views
-1

我有两个模型。第一个模型包含数据库中的每条记录。第二个模型包含记录中的最高金额。如何在一个视图中添加两个模型ASP.NET MVC

如何在一个视图中获得两个模型?我是Asp.NET MVC的新手,只是试图去理解它。

这是代码。

型号

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 Charity Highest { set; get; } 
     public DbSet<Charity> Donations { get; set; } //creates a donation database 
     public CharityDBContext() 
     { 
      this.Highest = new Charity(); 


     } 
    } 

} 

控制器

namespace CharitySite.Controllers 
{ 
    public class CharitiesController : Controller 
    { 
     private CharityDBContext db = new CharityDBContext(); 

     // GET: Charities 
     public ActionResult Index() 
     { 
      var AllDonations = new CharityDBContext(); 
      var all = db.Donations.OrderByDescending(s => s.Amount); 
      if (all.Any()) 
      { 
       //Get the highest amount record 
       var h = all.First(); 
       AllDonations.Highest.DisplayName = h.DisplayName; 
       AllDonations.Highest.Amount = h.Amount; 
       AllDonations.Highest.Comment = h.Comment; 
      } 

      return View(AllDonations); 
     } 

查看

@model IEnumerable<CharitySite.Models.Charity> 
@model CharitySite.Models.CharityDBContext 



@{ 
    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> 

</div> 

<h2>Highest</h2> 
<p>@Model.Highest.Amount</p> 
<p>@Model.Highest.DisplayName</p> 

<h2>Highest</h2> 
<p>@Model.Highest.Amount</p> 
<p>@Model.Highest.DisplayName</p> 

<h2>Highest</h2> 
<p>@Model.Highest.Amount</p> 
<p>@Model.Highest.DisplayName</p> 

<div class="table-title"> 
    @Html.Partial("_Database", Model); 

</div> 
+1

为什么不加包含慈善CharityDBContext一类? – Werner

+1

该模式并不是那样工作的。使用viewbag或创建一个有两个“模型”作为属性的模型 – Thorarins

+1

您正在考虑错误。模型的目的是提供可以传递给视图的结构。它基本上可以为UI提供服务(以迂回的方式)。如果一个视图有两个模型,视图的要求没有得到满足。创建具有公开视图所需内容的另一个模型。 –

回答

2

您可以创建自定义级Wi日两个型的属性,如下面的例子:

public sealed class CharitiesIndexViewModel { 
    public List<Charity> Charities { get; set; } 
    public Highest Highest { get; set; } 
} 

后,在您看来,您可以使用它:

@model CharitiesIndexViewModel 
+0

感谢您的回答。你从哪里获得最高公众?它应该不是公共CharityDBContext?即使我把这个我仍然得到错误。错误确实发生在你的代码给出,但它给我的视图中的错误,我尝试使用@模型CharitiesIndexViewModel – Edafy

+0

我不知道如果最高是正确的,我只是给你一个例子。当然你的模型需要公开。你可以说得更详细点吗? –

相关问题