【问题标题】:C# Get URL of page that submitted a formC# 获取提交表单的页面的 URL
【发布时间】:2011-12-09 15:57:32
【问题描述】:

我有一个包含 SmallSearchInputBox(用于搜索的 SharePoint 控件)的母版页。我的 SharePoint 网站上的每个页面都使用此母版页。有一个结果页面(results.aspx),我想知道在 results.aspx 上查看结果时使用并提交了 SmallSearchInputBox 的页面。

我尝试了通常的嫌疑人(Request.UrlReferrerRequest.ServerVariables["HTTP_REFERER"] 等),但在涉及表单时这些似乎不起作用。

在查看我的结果页面时,是否有其他方法可以获取上一页的 URL?

我怀疑这是一个标准 C# 问题,而不是 SharePoint 问题,尽管我在此处通过 SharePoint 特定方法提出了同样的问题:sharepoint.stackexchange.com

【问题讨论】:

  • 使用表单应该对 Request.UrlReferrer 或 Request.ServerVariables["HTTP_REFERER"] 没有影响,因为它们来自浏览器发送的标头。我对发布到另一个 ASPX 页面的表单的测试已填写 Request.UrlReferrer。
  • 有趣。当我尝试这个时,Request.UrlReferrer 和 Request.ServerVariables["HTTP_REFERER"] (我相信它们本质上是相同的)都返回 null 。也许这与母版页和/或 SharePoint 本身有关。

标签: c# asp.net forms


【解决方案1】:

您可以将您所在页面的网址放在提交表达式的表单中吗?

<form id="myForm" name="myForm" action="POST" method="mypage.aspx">
    <input type="hidden" id="referer" name="referer" value="somepage.aspx?somevar=20" />
</form>

【讨论】:

  • 很遗憾没有。 SmallSearchInputBox 是一个 ootb SharePoint 控件,不是我可以自定义的。理想情况下,解决方案是可以在 results.aspx 上完成的人只能确定上一页 URL。
  • 您始终可以创建一个继承自 OOTB SmallSearchInputBox 的新用户控件,并注入您自己的名为“referrer”的自定义字段,该字段完全符合 Moo-Juice 的概述。我认为更大的问题是为什么 Request.UrlReferrer 是空白的。
  • @Splash-X,我同意,更深层的问题是为什么没有推荐。也许是 SharePoint 的问题?
  • 我同意这两点。我目前正在考虑扩展 SmallSearchInputBox 控件,或者替换它,但是是的.. 更重要的(我认为)问题是为什么引用者为空(如果我能解决这个问题,那么我可以坚持使用 ootb 控件 - 首选选项。
  • @QMKevin 请记住,这两个变量是相同的。它们由浏览器发送的标头填充。去获取 Fiddler,安装它并运行一些测试。查看变量是否正在传递给服务器。如果页面是公开的,我可以提供帮助,但我认为不是?
【解决方案2】:

当您访问 results.aspx 时,会有一个查询字符串。在该查询字符串中有一个参数u,它包含包含带有 SmallSearchInputBox 的页面的站点的相对 URL。

感谢 Splash-X 和 Moo-Juice 的帮助 :)

【讨论】:

    猜你喜欢
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    相关资源
    最近更新 更多