无法使用Request.URL从page_load事件中获取URL

时间:2014-09-24 09:09:13

标签: c# asp.net

有一个网址。 http://website.com/ap/mob/en#contactus。我想要抓住包括#contactus在内的完整网址。我试图用Request.Url.AbsoluteUri从Page_load事件中捕获URL,但我的目的并没有得到解决。在这方面有谁能帮助我?

3 个答案:

答案 0 :(得分:0)

这是不可能的,因为浏览器不会将散列部分发送到服务器。当然有workarounds involving JavaScript,但那些会打开你的脚本注入应用程序。

此处what Wikipedia says

  

片段标识符的功能与其余部分不同   URI:即它的处理完全是客户端,没有   来自网络服务器的参与 - 当然是服务器通常   有助于确定MIME类型,MIME类型决定了   处理碎片。当代理(例如Web浏览器)   从Web服务器请求Web资源,代理将URI发送到   服务器,但不发送片段。相反,代理等待   为服务器发送资源,然后代理处理   资源根据文档类型和片段值。

答案 1 :(得分:0)

'#'在Url中通常用于将用户带到同一页面的不同部分。如果网址包含'#',请求将不会转到服务器。

您能提供有关您所拥有方案的更多详细信息吗?

答案 2 :(得分:0)

您可以使用javascript获取完整链接,然后将其传递给

背后的代码
<script language="javascript" type="text/javascript">

    function JavaScriptFunction() {
        document.getElementById('<%= hdnResultValue.ClientID %>').value = document.URL;
    }

</script>

<asp:HiddenField ID="hdnResultValue" Value="0" runat="server" />
        <asp:Button ID="Button_Get" runat="server" Text="run" OnClick="Button_Get_Click" OnClientClick="JavaScriptFunction();" />

然后从后面的代码中获取包含当前完整URL

的hi​​ddenfield的值
    protected void Button_Get_Click(object sender, EventArgs e)
    {
        string fullURL = hdnResultValue.Value;
    }