将URL存储到响应头中,以便我可以在任何地方访问它

时间:2015-05-20 11:40:01

标签: c# asp.net-mvc

我在这个上搜索了几个小时,没有找到一个有效的答案。基本上我要做的是以下内容:

我使用设置参数E.G:

访问我的索引页面
http://localhost:51684/Orders/Index?startDate=20%2F05%2F2015&endDate=26%2F05%2F2015

然后我点击订单进入编辑视图:

http://localhost:51684/Orders/Edit/1400069

我编辑了一些值而我发布:保存后我返回此编辑视图但我的Request.UrlReferrer是:http://localhost:51684/Orders/Edit/1400069而不是索引

一位同事建议尝试查看标题

所以我尝试了以下操作:在开始时添加自定义响应标头,以便随时可以访问它,如下所示: global.asax

中的代码
protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
    HttpContext.Current.Response.Headers.Add("SavedFilters", "/Orders/Index"); //Standard Value
    Response.Headers.Remove("Server");
    Response.Headers.Remove("X-AspNet-Version");
    Response.Headers.Remove("X-AspNetMvc-Version");
}

当我在索引页面中应用过滤器时,我会这样做:

System.Web.HttpContext.Current.Response.Headers.Set("SavedFilters", Request.RawUrl);

然后当我看到小提琴应用程序时会发生这种情况:

SavedFilters: /?startDate=20%2F05%2F2015&endDate=26%2F05%2F2015
SavedFilters: /Orders/Index

我得到2个标题完全相同的标题......

我对接下来要做什么/接下来尝试很无能为力..任何帮助都会非常感激

1 个答案:

答案 0 :(得分:0)

如果你没有在个别网络电话回复的实际回复中专门设置一个,那么你想发送“SavedFilters”的默认标题值吗?

简单,将 global.asax 中的代码更改为:

protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
    if (!HttpContext.Current.Response.Headers.AllKeys.Contains("SavedFilters"))
        HttpContext.Current.Response.Headers.Add("SavedFilters", "/Orders/Index"); //Standard Value
    Response.Headers.Remove("Server");
    Response.Headers.Remove("X-AspNet-Version");
    Response.Headers.Remove("X-AspNetMvc-Version");
}