gpt4 book ai didi

c# - ASP.NET 家庭 Controller

转载 作者:太空宇宙 更新时间:2023-11-03 23:23:24 28 4
gpt4 key购买 nike

首先,我是 ASP.NET 的新手。我正在尝试在网站上创建数独游戏,但遇到了一个问题。

我使用 HomeController 方法 -> ActionResult index() 显示数独字段;

在此 ActionResult 中,我创建了一个新的 SudokuField 并将其显示在网站上。这行得通。

我还在我的 Index.cshtml 中添加了一个 @html.ActionLink,如下所示:

@Html.ActionLink("Cheat", "Index", new { @no = 2 })

当我点击“作弊”时,它再次从 HomeController 调用 Index() 方法并将数字 2 作为参数,工作正常。但是因为再次调用了 Index() 方法,所以 HomeController 创建了一个新的 Sudoku 对象。所以我失去了 GameField 的当前状态。

我的问题:有没有HomeController不会新建数独对象的解决方案。

我的家庭 Controller ->

    SudokuBasis.Game myGame = new SudokuBasis.Game();
Models.Sudoku s = new Models.Sudoku(); // Sudoku Object

public ActionResult Index(int? no) {

if (no == null) {
myGame.Create(); // creates all fields and add some value
} else if (no == 2) {
myGame.Cheat(); // fills all fields
}

s.MyFields = myGame.GameField();

return View(s);
}

最佳答案

每个请求都会创建一个新的 Controller 实例,因此您需要将游戏创建转移到一个 Action 中。

您可以将数独实例存储在 Session 中,然后当您作弊时,您可以检查实例是否存在而不是创建一个新实例。

public ActionResult NewGame()
{
var game = new Game();
Session["game"] = game;
return View(game);
}

public ActionResult Cheat()
{
if (Session["game"] == null)
{
return RedirectToAction("NewGame");
}
var game = Session["game"] as Game;
return View(game);
}

关于c# - ASP.NET 家庭 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34601792/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com