在asp.net中按钮点击事件期间避免页面刷新

时间:2010-04-07 07:25:58

标签: c# asp.net

public partial class _Default : System.Web.UI.Page 
{
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)  // If page loads for first time
    {
        Session["update"] = Server.UrlEncode(System.DateTime.Now.ToString());   // Assign the Session["update"] with unique value

        //=============== Page load code =========================





        //============== End of Page load code ===================
    }

}



protected void Button1_Click(object sender, EventArgs e)
{
    if (Session["update"].ToString() == ViewState["update"].ToString())    // If page not Refreshed
    {
        //=============== On click event code =========================

        Label1.Text = TextBox1.Text;
        //lblDisplayAddedName.Text = txtName.Text;


        //=============== End of On click event code ==================

        // After the event/ method, again update the session  
        Session["update"] = Server.UrlEncode(System.DateTime.Now.ToString());
    }
    else  // If Page Refreshed
    {
        // Do nothing 
    }
}
protected override void OnPreRender(EventArgs e)
{
    ViewState["update"] = Session["update"];
}

}

这不适用于高分辨率渐变背景。

3 个答案:

答案 0 :(得分:2)

考虑将您的按钮和标签包装在updatepanel控件中,该控件使用AJAX刷新其内容。 页面的其余部分不会重新加载,操作也不会影响浏览器导航。

请参阅this page了解updatepanel控件的工作原理。

答案 1 :(得分:1)

由于您正在处理服务器端的按钮单击事件,因此必须有回发来处理它。

如果您不希望发回帖子,请将事件处理更改为“客户端点击”

答案 2 :(得分:0)

// Heinzi代码为我工作只是在OnPreRender事件中做了一个小改动,当它没有回发时分配ViewsState值

protected override void OnPreRender(EventArgs e)
    {
        if (!IsPostBack)
        {
            ViewState["update"] = Session["update"];

        }

    }