Будучи новичком в ASP.NET, я столкнулся с проблемами при создании своей собственной программы Whack-a-mole.Я думаю, что моя проблема связана с использованием кнопок, которые сами отправляют сообщения обратно на сервер, что делает программное обеспечение непригодным для использования.Внешний вид на месте, благодаря чему новые кнопки отображаются в сетке, в разных местах случайным образом.Тем не менее, когда кнопка нажата - счет не меняется (что мне кажется странным).
Не так странно, что Button не работает, так как отправляет сообщение обратно на сервер - перезагружает UpdatePanel.Я думаю, что я должен использовать другой контроллер, такой как CheckBox, и стилизовать его с помощью CSS (что не проблема).Это правильный путь, или я должен вместо этого использовать JavaScript AJAX?
Примечание для себя: этот метод не должен использоваться в общедоступном приложении, так как он оказывает слишком большое нежелательное давлениевеб-сервер.Используйте только для тестирования и обучения!
Спасибо за прослушивание!
<%@ 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;
}