如何将一个硬编码的卡片组(卡片组)从View传递给Controller。我已经尝试了几种不同的东西来传递它,但有各种结果。我的索引是一个有52张牌的屏幕,你可以在那里绘制顶牌,我希望能够将它们洗牌,甚至可以在当前套牌中添加一个新牌组,并更新硬编码列表。
这是一些相关的代码。有什么建议吗?
编辑:formpost方法是我不确定的地方。我可以在Action中添加一个新的卡片列表,但是当我尝试在当前套牌中添加一个新套牌时,问题会再次出现。
public class Card
{
public Suit Suit { get; set; }
public Cardnumber Cardnumber { get; set; }
public Card(Cardnumber c, Suit s)
{
this.Cardnumber = c;
this.Suit = s;
}
}
DeckOfCardsViewModel.cs
public class DeckOfCardsViewModel
{
public int ID { get; set; }
public List<Card> Cards { get; set; }
}
HomeController.cs
public ActionResult Index()
{
if (deck.Count < 1)
{
deck = new Deck().NewDeck();
deckViewModel = new DeckOfCardsViewModel();
deckViewModel.ID = 1;
deckViewModel.Cards = deck;
return View(deckViewModel);
}
else return View();
}
public ActionResult ShuffleDeck(DeckOfCardsViewModel shuffledDeck)
{
shuffledDeck.Cards = shuffledDeck.Cards.OrderBy(a => Guid.NewGuid()).ToList();
deckViewModel = shuffledDeck;
return View("Index",shuffledDeck);
}
Index.cshtml
@model DeckOfCards.Models.DeckOfCardsViewModel
@using (Html.BeginForm("ShuffleDeck", "Home", ****FormMethod.Post?***))
{
@Html.HiddenFor(Model => Model.Cards);
@Html.HiddenFor(Model => Model.ID);
<button class="btn btn-primary" name="TEST" type="submit" value="Submit">Shuffle</button>
}