成为ASP.NET的新手我在构建自己的Whack-a-mole计划时遇到了麻烦。我认为我的问题来自于使用按钮,它自己将回发邮件发送到服务器,使软件无法使用。外观很到位,使得新的按钮显示在网格中,在不同的地方随机显示。但是,当按下按钮时 - 分数不会改变(我感觉很奇怪)。
没有那么奇怪的是Button不起作用,因为它将回发送回服务器 - 重新加载UpdatePanel。我想我应该使用一个不同的控制器,如CheckBox,并使用CSS来设置它的样式(这不是问题)。这是正确的方法,还是应该使用JavaScript AJAX?
自我注意:此技术不应在公共应用程序中使用,因为它会对Web服务器施加太多不必要的压力。仅用于测试和学习!
Thanx倾听!
<%@ 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;
}
答案 0 :(得分:1)
您的Points变量在哪里声明?
我认为它可能是Whack_a_mole WebForm类的成员,这就是它不更新的原因。 WebForm的实例仅用于1 Postback,然后被销毁。
但更重要的是,对于像这样的游戏,你应该使用JavaScript或SilverLight。