我和我的团队正在开发门户网站应用程序。当用户请求页面时,我们会获得一个页面对象(包含权限,要使用的实际文件以及不使用的内容)。然后我们做一个Response.Redirect到“〜/ Default.aspx”。
疯狂的是,当验证访问的代码以及从ajax更新面板中的按钮单击事件调用的内容时,response.redirect将“& f2”或“/”粘贴到url中。因此,而不是http://localhost/Default.aspx,webbrowser被重定向到http://localhost/%f2Default.aspx,并且随后返回404错误。
HttpContext.Current.Response.Redirect("~/Default.aspx", false);
任何人都知道为什么会这样?只有当click事件在更新面板内触发时才会发生。
答案 0 :(得分:0)
听起来好像是escaping网址。你可以在生成URL的代码上调用一个方法来解码它吗?
答案 1 :(得分: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" />
<asp:Button ID="btnCustomerAddressEditCancel" runat="server" CausesValidation="false" OnClick="CustomerAddressEditCancel_Click"
Text="Cancel" />
<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>