【问题标题】:Response.Redirect executed before the codeResponse.Redirect 在代码之前执行
【发布时间】:2015-10-07 06:15:01
【问题描述】:

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

请帮忙。 提前致谢。

【问题讨论】:

    标签: asp.net response.redirect


    【解决方案1】:

    试试

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 谢谢 Rajesh....我还没有尝试过您的解决方案....Shekhar 建议的解决方案有效........
      • 欢迎您@Prashant...很高兴他的解决方案解决了它
      猜你喜欢
      • 1970-01-01
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      相关资源
      最近更新 更多