没有从查询字符串获取正确的链接

时间:2014-05-28 06:32:03

标签: c# javascript asp.net

您好我已经开发了一个演示应用程序。我的第一个html页面看起来像

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript">
        function clickPdf() {
            window.location=("http://localhost:63320/WebForm1.aspx?url=http://localhost:63320/nestle/html5dctpro/index.html#Economic/Total-Group-Sales");
        }
    </script>
</head>
<body>
    <input type="button" onclick="clickPdf()" value="DownloadPdf" />
</body>
</html>

我有一个aspx页面看起来像

public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var URL = Request.QueryString["url"];
    }
}

现在我的问题是我得到了URL=http://localhost:63320/nestle/html5dctpro/index.html而不是完整的网址因为#符号被切断了,任何人都可以告诉我如何获得完整的网址。

由于

5 个答案:

答案 0 :(得分:1)

.NET将无法直接为您提供哈希(即#之后的位),而不会被其他东西(如JavaScript)告知。

这是因为浏览器没有告诉服务器哈希是什么。

您想要做的事情可以通过JavaScript完成。 (如果需要,JavaScript可以通过window.location.hash访问哈希。)

因此,如果你真的想将哈希传递给.NET,你需要让JavaScript通过其他东西而不是哈希本身传递它。也许是另一个GET变量。

例如:

window.location=("http://localhost:63320/WebForm1.aspx?url=http://localhost:63320/nestle/html5dctpro/index.html&hash=Economic/Total-Group-Sales#hash=Economic/Total-Group-Sales");

(甚至删除原始哈希值,如果有进一步的理由在那里。)

答案 1 :(得分:1)

我认为你没有使用好方法。; o /

http://en.wikipedia.org/wiki/Query_string:“RFC 3986指定URI的查询组件是?和URI的结尾或字符#”之间的部分。

答案 2 :(得分:1)

使用JavaScript encodeURI并在服务器级解码: http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_encodeuri

答案 3 :(得分:1)

在JavaScript中使用encodeURIComponent。此功能对特殊字符进行编码。此外,它还编码以下字符:URI中的, / ? : @ & = + $ #

<强>的Javascript

<script type="text/javascript">
   function clickPdf() {
      var theURL = "http://localhost:63320/nestle/html5dctpro/index.html#Economic/Total-Group-Sales";
      window.location=("http://localhost:63320/WebForm1.aspx?url="+
                         encodeURIComponent(theURL));
   }
</script>

服务器端(无需更改):

public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var URL = Request.QueryString["url"];            
    }
 }

答案 4 :(得分:1)

当你在querystring中发送数据时,只需替换像

这样的字符
#,& 

与他们的URL编码等效。在这种情况下,替换

# with %23

只是一个演示:

var str = "http://localhost:63320/WebForm1.aspx?url=http://localhost:63320/nestle/html5dctpro/index.html#Economic/Total-Group-Sales");
var res = str.replace("#", "%28");