通过 ViewModel 将数据从两个模型传递到一个视图
Passing data from two Models into one View via ViewModel
我正在尝试将数据从 2 个模型传递到一个视图模型中,这样我就可以查看两个数据表的内容,尝试在我的控制器操作中执行此操作:
public ActionResult Details(int id)
{
var cards = _context.Cards.Single(c => c.Id == id);
var decks = _context.Cards.SingleOrDefault(d => d.Id == id);
var viewModels = (from m in cards.Deck
join r in decks on m.Card.id equals r.CoachId
select new DeckCardViewModel()
{
Card.Id= m.Id,
Deck.Id = r.Id
}).ToList();
}
我的视图模型:
public class DeckCardViewModel
{
public List<Card> Cards { get; set; }
public List<Deck> Decks { get; set; }
}
我的模特:
public class Card
{
public int Id { get; set; }
public string Name { get; set; }
public int? Atk { get; set; }
public int? Def { get; set; }
public string Desc {get; set;}
public int? Level { get; set; }
public string Type { get; set; }
public string Attribute { get; set; }
[DisplayName("Image")]
public virtual List<Image> Card_Images { get; set; }
public virtual List<Deck> Deck { get; set; }
}
public class Deck
{
public int id { get; set; }
public string Name { get; set; }
public string Notes { get; set; }
[DisplayName("Card")]
public virtual List<Card> Card { get; set; }
}
我的看法:
@model YGOBuilder.Models.ViewModels;
<div>
<h4>Card</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Name)
</dt>
<dd>
@Html.DisplayFor(model => model.Name)
</dd>
@foreach (var item in Model.Card_Images)
{
<dd>
<img src=@item.image_url height="300" width="200" style="margin: 2px">
</dd>
}
</dl>
<h1>Your Decks</h1>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Name)
</dt>
<dd>
@Html.DisplayFor(model => model.Name)
</dd>
</dl>
</div>
<p>
@Html.ActionLink("Back to List", "Index")
</p>
在我看来,我想做的是打印一张卡片的详细信息,然后打印我的数据库中所有可用牌组的列表。我似乎正在尝试并未能从数据库中收集数据,然后对该数据进行分区
public ActionResult Details(int id)
{
var cards = _context.Cards.SingleOrDefault(c => c.Id == id);
var decks = _context.Decks.ToList();
var viewModel = new DeckCardViewModel
{
Cards = cards,
Decks = decks
};
return View(viewModel);
}
这使我能够将卡片和套牌打印到视图中。
我正在尝试将数据从 2 个模型传递到一个视图模型中,这样我就可以查看两个数据表的内容,尝试在我的控制器操作中执行此操作:
public ActionResult Details(int id)
{
var cards = _context.Cards.Single(c => c.Id == id);
var decks = _context.Cards.SingleOrDefault(d => d.Id == id);
var viewModels = (from m in cards.Deck
join r in decks on m.Card.id equals r.CoachId
select new DeckCardViewModel()
{
Card.Id= m.Id,
Deck.Id = r.Id
}).ToList();
}
我的视图模型:
public class DeckCardViewModel
{
public List<Card> Cards { get; set; }
public List<Deck> Decks { get; set; }
}
我的模特:
public class Card
{
public int Id { get; set; }
public string Name { get; set; }
public int? Atk { get; set; }
public int? Def { get; set; }
public string Desc {get; set;}
public int? Level { get; set; }
public string Type { get; set; }
public string Attribute { get; set; }
[DisplayName("Image")]
public virtual List<Image> Card_Images { get; set; }
public virtual List<Deck> Deck { get; set; }
}
public class Deck
{
public int id { get; set; }
public string Name { get; set; }
public string Notes { get; set; }
[DisplayName("Card")]
public virtual List<Card> Card { get; set; }
}
我的看法:
@model YGOBuilder.Models.ViewModels;
<div>
<h4>Card</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Name)
</dt>
<dd>
@Html.DisplayFor(model => model.Name)
</dd>
@foreach (var item in Model.Card_Images)
{
<dd>
<img src=@item.image_url height="300" width="200" style="margin: 2px">
</dd>
}
</dl>
<h1>Your Decks</h1>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Name)
</dt>
<dd>
@Html.DisplayFor(model => model.Name)
</dd>
</dl>
</div>
<p>
@Html.ActionLink("Back to List", "Index")
</p>
在我看来,我想做的是打印一张卡片的详细信息,然后打印我的数据库中所有可用牌组的列表。我似乎正在尝试并未能从数据库中收集数据,然后对该数据进行分区
public ActionResult Details(int id)
{
var cards = _context.Cards.SingleOrDefault(c => c.Id == id);
var decks = _context.Decks.ToList();
var viewModel = new DeckCardViewModel
{
Cards = cards,
Decks = decks
};
return View(viewModel);
}
这使我能够将卡片和套牌打印到视图中。