【问题标题】:Submit value of a TextBox without reloading page提交文本框的值而不重新加载页面
【发布时间】:2011-08-22 14:05:33
【问题描述】:

我正在开发一个基于 ASP.NET 的井字游戏。我遇到的问题是: 游戏在两个用户之间进行。当第一个在 TextBox 中键入“x”时,我希望在第二个玩家的计算机上显示“x”而不重新加载页面。 我不知道某些代码是否会有所帮助,但这是我不重新加载的方式(用户必须手动重新加载页面......愚蠢):

protected void TopLeft_TextChanged(object sender, EventArgs e)
    {
        Application.Lock();
        GameBoard gameBoard = new GameBoard();
        gameBoard.board[0, 0] = char.Parse(this.TopLeft.Text);
        Application["TopLeft"] = gameBoard.board[0, 0];
        Application.UnLock();
    }

然后,在页面预渲染:

protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);

        Application.Lock();
        if(Application["TopLeft"] != "0")
        {
            this.TopLeft.Text = Application["TopLeft"].ToString();
        }
        ...

等等…… 我会非常感谢任何可以提供帮助的人!

【问题讨论】:

  • 你会想要阅读 AJAX

标签: c# asp.net visual-studio-2010 reload tic-tac-toe


【解决方案1】:

你问的是Partial Page Update

首先,您需要将客户端 TextBox 或您需要重新加载的任何其他控件放在 UpdatePanel 中。

然后,您需要随时调用UpdatePanel.Update 来更新这些控件。

【讨论】:

  • @Tsvetan:UpdatePanel.Update() 仅在同一页面上重新加载其内容的更新值。如果它已在一个对等点上调用,那么它将更新该对等点页面上的内容。
  • @Tsvetan:堆栈溢出的一个例子是投票。当您对问题进行投票时,新值是在指标刷新之前发生的总投票数。但指标不会自行刷新。
  • @Tsvetan:当然,您可以使用计时器等间隔更新它。
【解决方案2】:

查看 AJAX。这将需要客户端脚本在不提交或更新整个页面的情况下提交和检测更新。

但是,请注意,这是一个相当高级的主题,而不仅仅是您可以添加的一小段代码。我会推荐一本好的 AJAX/JavaScript/jQuery 书籍。

【讨论】:

    【解决方案3】:

    您需要使用AJAX 来执行此操作。我建议查看 jQuery 提供的一些 AJAX 功能,但您也可以查看 Microsoft 的 AJAX 工具包。

    这里是 jQuery 中 AJAX 的文档:

    我觉得这比微软提供的开箱即用的“轻”得多。您可以在此处找到有关 Microsoft AJAX 工具包的更多信息:

    【讨论】:

    • 谢谢!但是我没有太多时间阅读文档,那么,有没有办法在轮流玩家输入后重新加载正在等待的用户的页面?
    猜你喜欢
    • 2021-11-12
    • 2017-06-23
    • 2013-10-14
    • 2017-09-19
    相关资源
    最近更新 更多