是否有RESPONSE.REDIRECT的直接指令转到上一页?

时间:2011-06-20 11:55:28

标签: asp.net vb.net

我有一个带有收件箱的Web应用程序(帮助台票务系统),用于监控传入请求,并制作了一些过滤器按钮,帮助用户根据请求者姓名,创建日期等安排请求。

每个过滤器只会调用同一页面,但会在查询字符串中添加一些代码。 例如,如果用户按下标有[按日期排序]的按钮,则该按钮背后的代码为:

Response.Redirect("Inbox.aspx?Filter=DATE")

另一个按钮同样会执行:

Response.Redirect("Inbox.aspx?Filter=NAME")

GridView将填充一些行(传入请求的摘要),并按用户的偏好排序。

一旦用户决定查看任何传入请求的完整详细信息,点击任意一行将导致

Response.Redirect("Details.aspx?REQ_ID=123") 
'where 123 is the request number the user clicked

然后,用户有机会使用Details.aspx页面上的几个按钮更新/编辑请求,但是每个按钮都需要将用户返回到收件箱,其中包含用户在访问之前具有的过滤器的首选项。 Details.aspx页面。

换句话说,一旦用户按下Details.aspx页面上的按钮,我想执行以下操作

    Sub btnUpdateRequest() Handles btnUpdateRequest.Click

    'My code here for the button action (update/edit/send/cancel)
    ' once the job is done, return the user to the Inbox.aspx page with the same filter

    Response.Redirect("javascript:History.Back()")
    End Sub

但我知道Response.Redirect不接受javascript,我不想在Code Behind文件和ASPX文件(添加OnClientClick属性)之间拆分代码,因为我需要同时执行VB指令和重定向用户。

3 个答案:

答案 0 :(得分:5)

您可以重定向到引荐来源网址。你应该先检查它是否可用。

if (Request.UrlReferrer.AbsoluteUri != null) {
    Response.Redirect(Request.UrlReferrer.AbsoluteUri);
}

答案 1 :(得分:0)

以下可能会对您有所帮助。将此代码放在按钮单击()

Page.RegisterStartupScript("goBack", "<script type=""text/javascript"" language=""javascript"">window.history.go(-1);</script>")

答案 2 :(得分:0)

而不是Page.您可以使用ClientScript.,类似于:

ClientScript.RegisterStartupScript(
    GetType(String), 
    "goBack", 
    "<script type=""text/javascript"" language=""javascript"">window.history.go(-2);</script>")

我的建议中的.go(-2)是必要的(ReportViewer)。