【问题标题】:ASP.net change Label text after Page LoadASP.net 在页面加载后更改标签文本
【发布时间】:2016-01-12 11:50:22
【问题描述】:

我知道考虑到页面生命周期可能无法实现,但有什么方法可以在执行 Page_Load 方法后将标签文本更改为委托的结果。

这是我的代码

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 以使结果显示在标签中的内容提出建议

【问题讨论】:

  • 是的,有可能。但是您几乎不应该在 ASP.NET 中使用 static 变量。这些在所有请求/用户之间共享,并将始终被覆盖。而是使用SessionViewState、url 参数、隐藏字段或其他方式在用户请求之间持久化数据
  • 静态变量仅用于测试

标签: c# asp.net delegates pageload


【解决方案1】:

您是否尝试过使用 page_loadcomplete 然后调用委托?

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

【讨论】:

    猜你喜欢
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    相关资源
    最近更新 更多