Response.Redirect在代码之前执行

时间:2015-10-07 06:15:01

标签: asp.net response.redirect

我是ASP的新手并且遇到了一个不寻常的问题。我正在使用提交按钮并编写一些代码以在数据库中进行更改,然后在最后打开一个新页面

protected void SaveContentButton_Click(object sender, EventArgs e) 
    {

        if (contentid == 0 )
        {
             pageCntnt = new content();
        }

        //value from DropDownList.
        pageCntnt.var1 = int.Parse(this.var1.SelectedValue);
        pageCntnt.var2 = objCntnt.Text.Trim();
        pageCntnt.var3 = objCntnt.Text.Trim();

        //Save in the db.
        pageCntnt.Save();

        //Redirect to test.asp.
        Response.Redirect("test.asp");
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        contentstring = Request.QueryString["cntntstr"] != null ? Utilities.ToInt32(Request.QueryString["cntntstr"].ToString()) : 0;


        if (contentstring > 0)
        {
            //Get the value from DB
            pagecntnt = content.SelectByContentid(contentstring);
        }

        if (pagecontent != null && !Page.IsPostBack)
        {
            this.siteid.DataBind();
        this.siteid.Items.FindByValue(pagecntnt.var1.ToString()).Selected = true;

            TxtBx1.Text = pagecntnt.var2;
            TxtBx2.Text = pagecntnt.var3;

        }

    }`

我的按钮def是

<div class="floatright">
    <asp:Button ID="SaveContent" runat="server" OnClick="SaveContentButton_Click" Text="Submit" />&nbsp;&nbsp;
    <input type="button" value="Cancel" onclick="document.location.href='test.asp'" />
</div>

现在我的问题是每当我点击提交按钮页面直接转到test.asp而不执行函数上面的代码。我通过ClientScript.RegisterStartupScript(this.GetType(), "On Save pagecontent Location_X", "alert('" + var2.Value + "');", true);测试  在SaveContentButton_click函数的各个地方。每当我评论Response.Redirect时,所有上面的代码都会被执行并且我得到所有警报,如果我取消注释,它会直接转到redirect.response,而不执行上面的任何代码,也不显示任何警报。不会转到我在数据库中保存数据的保存功能。

请帮助。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

尝试

Response.Redirect("test.asp",false);

如果你false它不会中止该线程。

有关Response.Redirect的更多详情,请here

答案 1 :(得分:1)

如果您在成功进行数据库更改后尝试重定向,请执行以下操作:

protected void SaveContentButton_Click(object sender, EventArgs e) 
{ 
    bool blnResult = false;
    if (contentid == 0 )
    {
         pageCntnt = new content();
    }
    //value from DropDownList.
    pageCntnt.var1 = int.Parse(this.var1.SelectedValue);
    pageCntnt.var2 = objCntnt.Text.Trim();
    pageCntnt.var3 = objCntnt.Text.Trim();

    //Save in the db.
    blnResult = convert.toBoolean(pageCntnt.Save()); 
    //Here i have converted save method into Boolean type so now its going to return True/False

    if(blnResult) //Redirect only when blnResult is true
    {
        //Redirect to test.asp.
        Response.Redirect("test.asp");
    }
}