2010-03-22 102 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>