Response.Redirect () не работает .net 4.0 - PullRequest
1 голос
/ 22 октября 2011

При нажатии кнопки я вызываю функцию javascript в функции JS, которую я перенаправляю на страницу aspx, а на странице aspx я хочу перенаправить на другую страницу (эта часть не работает). response.redirect не перенаправляет, просто отправляет обратно на текущую страницу. Любая идея, почему она не работает.

Вот мой код:

Review.aspx:

<asp:Button ID="btnComplt" runat="server" Text="Complete" OnClientClick ="return compAsgn()" />

function compAsgn() {
       if (window.confirm("Submit all images and complete the assignment?"))
           window.location = "SendImages.aspx?insid=" + $("#IAssignmentId").val() + '&option=complete';
       else
           return false;

SendImages.aspx:

 protected void Page_Load(object sender, EventArgs e)
        {
            assignmentId = Convert.ToInt32(Request.QueryString["insid"]);
            string url = "Review.aspx?insid" + assignmentId.ToString() + "&viewOption=review";

            string qstrVal = string.Empty;
            qstrVal = Request.QueryString["option"].ToString().ToLower();
            if (qstrVal != null && qstrVal == "complete")
            {
                using (ServiceClient client = new Proxies.ServiceRef.ServiceClient())
                {
                    List<AssignmentInfo> ainfo = new List<AssignmentInfo>();
                    ainfo = client.GetAssignmentInfo(assignmentId);
                    if (ainfo.Count > 0)
                    {
                        if (ainfo[0].UploadedCount == 0)
                        {
// AfarSessionData class has a property called ProfileId, which is session variable.  
                            if (AfarSessionData.ProfileId == "000000")
                                url = "Admin.aspx";
                            else
                                url = "HomePage.aspx";
                        }


                    }
                }

            }


            Response.Redirect(url, false);
        }

Примечание: при отладке я вижу, что элемент управления попадает на страницу SendImages, но я вижу, что response.redirect не перенаправляет, а просто отправляет обратно на текущую страницу.

Ответы [ 2 ]

2 голосов
/ 22 октября 2011

Насколько я могу судить, вы ничего не делаете для завершения запроса.Я не парень ASP.NET, но я подумал , вы должны либо:

  • Сделать второй аргумент true, чтобы эффективно "жестко прервать" запрос с исключением
  • Введите второй аргумент false, но затем вызовите CompleteRequest, чтобы остановить остальную часть конвейера
1 голос
/ 22 октября 2011

Некоторая дополнительная информация, связанная с ответом Джона Скитса:

//ends request, no exception, calls Response.End() internally
Response.Redirect (url, true);

или

try
{
    Response.Redirect (url, false);
}
catch(ThreadAbortException e)
{
    //do whatever you need to
}

Вот некоторая информация по этому вопросу:

PRB: ThreadAbortException возникает, если вы используете Response.End, Response.Redirect или Server.Transfer

...