2016-01-12 2 views
0

Я знаю, что это может быть невозможно, учитывая жизненный цикл страницы, но есть ли способ изменить текст метки на результат моего делегата после выполнения метода Page_Load.Изменение ASP.net Текст метки после загрузки страницы

Это мой код

public partial class WebForm1 : System.Web.UI.Page 
    { 
     //private static int Clicks; 
     static RaceResult Result; 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      //Label1.Text = Convert.ToString(Session["Clicks"]); 

      // First page load? 
      if (!IsPostBack) 
      { 
       Result = new RaceResult(0, ""); 
       Result.NbrClicksReached += Result_NbrClicksReached; 
      } 
     } 

     private void Result_NbrClicksReached(string message) 
     { 
      lblRaceResults.Text = (message); //This is the label I would like to change 

     } 

     protected void btnCounter_Click(object sender, EventArgs e) 
     { 
      Result.Add(1); 
     } 

     public delegate void StringDelegate(string message); 

     public class RaceResult 
     { 
      public int Clicks { get; set; } 
      public string Name { get; set; } 

      public RaceResult(int clicks, string name) 
      { 
       Name = name; 
       Clicks = 0; 
      } 

      //Delegate 
      public event StringDelegate NbrClicksReached; 

      public void Add(int amount) 
      { 
       Clicks += amount; 

       if (Clicks == 1) 
       { 
        Name = "3rd"; 
        if (NbrClicksReached != null) 
         NbrClicksReached(Name); 
       } 

       if (Clicks == 2) 
       { 
        Name = "2nd"; 
        NbrClicksReached(Name); 
       } 

       if (Clicks >= 3) 
       { 
        Name = "1st"; 
        NbrClicksReached(Name); 
       } 
      } 
     } 
    } 

Это моя ASPX страница

<body> 
    <form id="form1" runat="server"> 
     <div> 
      <asp:Button ID="btnFeed" OnClick="btnCounter_Click" runat="server" Text="Button" /> 
      <br /> 
      <asp:Label ID="lblRaceResults" runat="server" Text="Label"></asp:Label> 
     </div> 
    </form> 
</body> 

Если это не представляется возможным, чтобы изменить ярлыки текста может кто-нибудь сделать предложение, что я мог бы добавить к моему Page_Load чтобы получить результат для отображения на ярлыке

+1

Да, это возможно. Но вы почти никогда не должны использовать переменные 'static' в ASP.NET. Они распределяются между всеми запросами/пользователями и будут перезаписаны всегда. Вместо этого используйте 'Session',' ViewState', url-параметр, скрытое поле или другие способы сохранения данных между пользовательскими запросами –

+0

Статическая переменная доступна только для тестирования – Cathal

ответ

0

Вы пробовали использовать page_loadполное, а затем вызвали делегат?

protected void Page_LoadComplete(object sender, EventArgs e) 
    { 
     Result_NbrClicksReached(string message); 
    }