提交文本框的值而不重新加载页面

Posted

技术标签:

【中文标题】提交文本框的值而不重新加载页面【英文标题】: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 【参考方案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 的文档:

http://api.jquery.com/jQuery.ajax/

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

http://www.asp.net/ajax/ajaxcontroltoolkit/samples/

【讨论】:

谢谢!但是我没有太多时间阅读文档,那么,有没有办法在轮流玩家输入后重新加载正在等待的用户的页面?

以上是关于提交文本框的值而不重新加载页面的主要内容,如果未能解决你的问题,请参考以下文章

表单提交后怎么样才能不清空文本框和下拉框的值呢?

仅使用 jQuery/Ajax 刷新表的值而不重新加载页面

java中用a标签提交,后台怎样获取页面文本框的值

将表单的所有输入重置为默认值而不重新加载

从 MYSQL 表中更新值而不重新加载页面?

标签(表的单元素)