我是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函数在我执行操作之前执行或类似的事情。
我希望很清楚我想要实现的目标,有人能指出我正确的方向吗?
答案 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>");
}