【发布时间】:2010-07-14 07:12:27
【问题描述】:
作为 ASP.NET 的新手,我在构建自己的 Whack-a-mole 程序时遇到了麻烦。我认为我的问题来自使用 Buttons,它自己将帖子发送回服务器,使软件无法使用。外观就位,使新按钮随机出现在网格中的不同位置。然而,当一个按钮被按下时——分数并没有改变(我觉得这很奇怪)。
不奇怪的是,Button 不起作用,因为它将 post 发送回服务器 - 重新加载 UpdatePanel。我想我应该使用一个不同的控制器,比如 CheckBox 并使用 CSS 设置它的样式(这不是问题)。这是正确的方法吗,还是应该改用 JavaScript AJAX?
自我注意:这种技术不应该在公共应用程序中使用,因为它会给 Web 服务器带来太多不必要的压力。仅用于测试和学习!
感谢聆听!
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master"
AutoEventWireup="true" CodeFile="Whack-a-mole.aspx.cs"
Inherits="Whack_a_mole" %>
<asp:Content ID="Content" ContentPlaceHolderID="cphContent" runat="server">
<h1>Whack-a-Mole</h1>
<asp:ScriptManager ID="smgrTime" runat="server" />
<asp:Timer ID="Timer" OnTick="Timer_Tick" runat="server" Interval="2000" />
<asp:UpdatePanel ID="updpButtons" runat="server" UpdateMode="Always">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer" />
</Triggers>
<ContentTemplate>
<asp:Label ID="lblPoints" runat="server" Text="Score: 0p" />
<asp:Button ID="Button1" runat="server" BorderStyle="Outset"
BorderWidth="3px" CssClass="mole" Text="Mole"
onclick="Button1_Click" />
<asp:Button ID="Button2" runat="server" BorderStyle="Outset"
BorderWidth="3px" CssClass="mole" Text="Mole"
onclick="Button2_Click" />
<asp:Button ID="Button3" runat="server" BorderStyle="Outset"
BorderWidth="3px" CssClass="mole" Text="Mole"
onclick="Button3_Click" />
<!-- continues the same way down to Button25 -->
<asp:Button ID="Button25" runat="server" BorderStyle="Outset"
BorderWidth="3px" CssClass="mole" Text="Mole"
onclick="Button25_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
代码文件摘录:
// points vairable
private int points;
// Property for points
public int Points
{
get { return points; }
set { points = value; }
}
protected void Timer_Tick(object sender, EventArgs e)
{
Random random = new Random();
int visible;
foreach (Button button in buttonList)
{
visible = random.Next(1, 10);
if (visible == 3)
button.Visible = true;
else
button.Visible = false;
}
lblPoints.Text = "Score: " + Points + " p";
}
protected void Button1_Click(object sender, EventArgs e)
{
Points = Points + 1;
}
【问题讨论】:
标签: c# asp.net button postback