您好我已经开发了一个演示应用程序。我的第一个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
而不是完整的网址因为#符号被切断了,任何人都可以告诉我如何获得完整的网址。
由于
答案 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");