2010-03-22 3 views
1

Моя команда и я работаем над приложением портала. Когда пользователь запрашивает страницу, мы получаем объект страницы (соответствующие разрешения, фактический файл для использования, а что нет). Затем мы создаем Response.Redirect для «~/Default.aspx».Asp.net Response.Redirect Error

Сумасшедшая вещь заключается в том, что когда код для проверки доступа и что не вызывается из события нажатия кнопки изнутри панели обновления ajax, response.redirect вставляет « f2» или «/» в URL-адрес , Поэтому вместо http://localhost/Default.aspx веб-браузер перенаправляется на http://localhost/%f2Default.aspx и впоследствии возвращает ошибку 404.

HttpContext.Current.Response.Redirect("~/Default.aspx", false); 

У кого-нибудь есть идеи, почему это произойдет? И это происходит только тогда, когда событие щелчка запускается внутри панели обновления.

ответ

0

Похоже, что это escaping URL. Можете ли вы вызвать метод кода, который генерирует URL для его декодирования перед выходом?

+0

Это была моя первая мысль, но, как указано в первоначальном сообщении. , , это код перенаправления. , это не перенаправление, у которого есть «динамический» URL-адрес. Он жестко закодирован. – andrewWinn

0

Решение настроить панель обновления, как это:

<asp:UpdatePanel ChildrenAsTriggers="false" UpdateMode="Conditional" runat="server"> 
    <Triggers> 
    <asp:AsyncPostBackTrigger ControlID="ddlNewAddressCountry" EventName="SelectedIndexChanged" /> 
    <asp:AsyncPostBackTrigger ControlID="ddlAddressState" EventName="SelectedIndexChanged" /> 
    <asp:AsyncPostBackTrigger ControlID="ddlNewAddressCity" EventName="SelectedIndexChanged" /> 
    <asp:AsyncPostBackTrigger ControlID="ddlNewAddressPostalCode" EventName="SelectedIndexChanged" /> 
    <asp:PostBackTrigger ControlID="btnCustomerAddressEditCancel" /> 
    </Triggers> 
... 
<td colspan="2"> 
          <asp:Button ID="btnCustomerAddressEditSave" runat="server" OnClick="CustomerAddressEditSave_Click" 
           Text="Save" /> 
          &nbsp;&nbsp;&nbsp; 
          <asp:Button ID="btnCustomerAddressEditCancel" runat="server" CausesValidation="false" OnClick="CustomerAddressEditCancel_Click" 
           Text="Cancel" /> 
          &nbsp;&nbsp;&nbsp; 
          <asp:Button ID="btnCustomerAddressEditDelete" runat="server" OnClick="CustomerAddressEditDelete_Click" OnClientClick="return confirm('Are you sure you want to delete this record?');" 
           Text="Delete" /> 
         </td> 
        </tr> 
       </table> 
     </ContentTemplate> 
    </asp:UpdatePanel>