2010-03-22 6 views
1

Mon équipe et moi travaillons sur une application de portail. Quand un utilisateur demande une page, nous obtenons un objet de page (contianing permissions, fichier réel à utiliser et quoi pas). Nous faisons ensuite un Response.Redirect à "~/Default.aspx". La chose folle est que lorsque le code pour valider l'accès et ce qui n'est pas appelé à partir d'un événement de clic de bouton à partir d'un panneau de mise à jour ajax, response.redirect collera un "& f2" ou un "/" dans l'URL . Ainsi, au lieu de http://localhost/Default.aspx, le navigateur Web est redirigé vers http://localhost/%f2Default.aspx et renvoie par la suite une erreur 404.Asp.net Response.Redirect Error

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

quelqu'un a une idée de pourquoi cela se produirait? Et cela ne se produit que lorsque l'événement click se déclenche dans un panneau de mise à jour.

Répondre

0

Il semble que ce soit escaping l'URL. Pouvez-vous appeler une méthode sur le code qui génère l'URL pour le décoder avant la sortie?

+0

Ce fut ma première pensée, mais comme indiqué dans le message original. . . c'est le code de redirection. . ce n'est pas une redirection qui a une URL "dynamique". C'est codé en dur. – andrewWinn

0

La solution est de mettre en place le panneau de mise à jour comme celui-ci:

<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> 
Questions connexes