通过 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);
        }

这使我能够将卡片和套牌打印到视图中。