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

本文关键字:URL load 事件 获取 page Request | 更新日期: 2023-09-27 18:24:23

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

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

您可以使用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 的hiddenfield的值

    protected void Button_Get_Click(object sender, EventArgs e)
    {
        string fullURL = hdnResultValue.Value;
    }

这是不可能的,因为浏览器不会将哈希部分发送到服务器。当然,有一些涉及JavaScript的变通方法,但这些方法会让您的应用程序接受脚本注入。

维基百科是这么说的:

片段标识符的功能与URI:即它的处理完全是客户端的,没有来自web服务器的参与--当然,服务器通常帮助确定MIME类型,MIME类型确定碎片处理。当代理(如Web浏览器)从web服务器请求web资源,代理将URI发送到服务器,但不发送片段。相反,代理会等待服务器发送资源,然后代理处理资源。

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

你能提供更多关于你所拥有的场景的细节吗?