2010-03-22 100 views
1

我和我的团队正在开发一个门户网站应用程序了。当一个用户请求一个页面时,我们得到一个页面对象(连续的权限,实际的文件使用和不是)。然后我们做一个Response.Redirect到“〜/ Default.aspx”。Asp.net Response.Redirect的错误

疯狂的事情是,当验证访问的代码以及从ajax更新面板中的按钮点击事件调用的代码时,response.redirect正在将“& f2”或“/”粘贴到url中。因此,而不是http://localhost/Default.aspx,web浏览器被重定向到http://localhost/%f2Default.aspx,并随后返回404错误。

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

任何人都知道为什么会发生这种情况?只有当点击事件在更新面板内触发时才会发生。

回答

0

这听起来就像是escaping的URL。你可以在产生URL的代码上调用一个方法来在输出前解码它吗?

+0

这是我的第一个念头,但在原岗位上市。 。 。那就是重定向代码。 。它不是一个具有“动态”url的重定向。它是硬编码的。 – andrewWinn 2010-03-22 20:31:56

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>