在ASP.NET中发布后将状态消息返回到页面

时间:2014-08-11 07:52:36

标签: c# asp.net webforms

我是ASP.Net的新手,但之前使用过ASP Classic。

我正在尝试弄清楚如何从“代码隐藏”页面向我的前端页面返回状态消息。

public partial class test: System.Web.UI.Page
{
    private String msg;
    protected void Page_Load(object sender, EventArgs e)
    {
        status.Text = msg;
    }

    protected void action(object sender, EventArgs e)
    {
        msg = "Hello world!";
    }
}

当我的页面发布到自身时,我无法在前端页面的状态标签中看到我期待的消息。

我猜这是因为Page_Load函数在我执行操作之前执行或类似的事情。

我希望很清楚我想要实现的目标,有人能指出我正确的方向吗?

4 个答案:

答案 0 :(得分:2)

OnPreRender而不是OnLoad上设置文字。它会在事件发生后触发,并且应该用于尽可能多地使用UI。

public partial class test: System.Web.UI.Page
{
    private String msg;
    protected void OnPreRender(object sender, EventArgs e)
    {
        status.Text = msg;
    }

    protected void action(object sender, EventArgs e)
    {
        msg = "Hello world!";
    }
}

通常情况下,如果您正在经历一些事件,这是最好的方式 - 您不知道事件将触发的顺序,因此您希望在最后设置您的消息。但是,除非你需要做任何更复杂的事情,为什么不在事件本身设置它并摆脱私有变量和额外的方法调用?

public partial class test: System.Web.UI.Page
{
    protected void action(object sender, EventArgs e)
    {
        status.Text = "Hello world!";
    }
}

答案 1 :(得分:2)

protected void Page_Load(object sender, EventArgs e)
{
    if (!isPostBack)
    {
    status.Text = "First time on page";
    }
}

protected void action(object sender, EventArgs e)
{
    status.Text = "Hello world!";
}

答案 2 :(得分:0)

你可以使用Session来实现这一点,假设你有按钮或任何其他导致回发的控件,并触发动作功能。

public partial class test: System.Web.UI.Page
{
   private String msg;

   protected void Page_Load(object sender, EventArgs e)
   {
       if (!IsPostback)
       {
          Session["Message"] = null;
       }
       else
       {
          status.Text = Session["message"].ToString();
       }
   }

   protected void action(object sender, EventArgs e)
   {
       msg = "Hello world!";
       Session["message"] = msg;
   }
}

答案 3 :(得分:0)

protected void action(object sender, EventArgs e)
{
    Response.Write("<script type=\"text/javascript\">alert('Your Message');</script>");
}