Response.Redirect 在代码之前执行

Response.Redirect executed before the code

我是 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;

        }

    }`

我的按钮定义是

<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,而不执行上面的任何代码,也不会显示任何警报也不会转到我将数据保存在数据库中的保存功能。

请帮忙。 提前致谢。

尝试

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

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

关于 Response.Redirect 的更多详细信息是 here

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

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");
    }
}