Как я помню, в C# гобал переменные через ASP.NET обратной передачи с реализации на AJAX?
У меня есть ASP.NET веб-сайт, который позволяет пользователю открыть изображение в ImageButton и нажать на него. Большинство переменных int и double являются глобальными, чтобы легко переходить между методами без слишком большого количества параметров. Глобальные переменные int включают размер изображения, numClicks (счетчик кликов), расстояние и расстояние бега. Глобальные двойные переменные включают коэффициент масштабирования (устанавливается в зависимости от размера изображения).
Событие OnClick для ImageButton обрабатывается методом C#
protected void Image_Click(object sender, ImageClickEventArgs e)Метод вычисляет "реальное" расстояние между парой кликов путем деления расстояния между пикселями и деления его на статическое значение DotsPerInch и коэффициент масштабирования. Этот метод также выполняет увеличение расстояния бега каждый раз, когда происходит пара щелчков мыши. Существует также кнопка "Сброс", обрабатываемая методом C#
protected void Reset_It(object sender, EventArgs e)который устанавливает расстояние бега и numClicks обратно в ноль.
Сначала я попытался сохранить переменные в состояниях сеанса, чтобы выжить при пересечении ASP.NET postback, но это быстро вышло из-под контроля, так как у меня есть около 20 переменных в общей сложности. Я узнал, что могу избежать обратной передачи с помощью реализаций Ajax. Мой вопрос заключается в том, как я могу использовать реализации Ajax с помощью ASP.NET методы обработчика C# OnClick?
Вот определение некоторых переменных
private int pos1x, pos1y = 0; private int pos2x, pos2y = 0; private int numClick = 0; private int distx, disty = 0; private int redistx, redisty, newdist = 0; private int runningtotal = 0; private double zoom = 1.0;
Вот метод Image_Click:
protected void pictureBox1_Click(object sender, MouseEventArgs e) { numClick++; if (numClick% 2 == 1) { pos1x = e.X; pos1y = e.Y; pt = new Point(pos1x,pos1y); rects.Add(new Rectangle(pt, new Size(20, 20))); pictureBox1.Invalidate(); } else { pos2x = e.X; // mouseUp position pos2y = e.Y; // pt = new Point(pos2x,pos2y); rects.Add(new Rectangle(pt, new Size(10, 20))); pictureBox1.Invalidate(); float distx = Math.Abs(pos2x - pos1x); // length of measurement float disty = Math.Abs(pos2y - pos1y); redistx = (int)(Math.Ceiling((float)(distx / (1 / zoom * Math.Floor(dpiX / 4.0))))); redisty = (int)(Math.Ceiling((float)(disty / (1 / zoom * Math.Floor(dpiY / 4.0))))); newdist = (int)(Math.Ceiling(Math.Sqrt((redistx * redistx + redisty * redisty)))); } }
Вот метод Reset_It:
protected void resetCount_Click(object sender, EventArgs e)// reset count { numClick = 0; runningtotal = 0; }
Вот .aspx веб-элементы управления:
<asp:ImageButton ID="pic" runat="server" ImageAlign="Left" OnClick="Image_Click" />
<asp:Button ID="Resetter" runat="server" Text="Reset" Width="120px" OnClick="Reset_It"/>
Что я уже пробовал:
protected void Page_Load(EventArgs e) { Session["Variable"] = any variable; }