我有一个带有收件箱的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指令和重定向用户。
答案 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)。