在JavaScript中将路径设置为Root
我正在做一个从1.1到2.0的ASP.NET Web应用程序项目的快速移植。因此,模板不是母版页,而是作为自定义控件创建的。侧面板中有一个搜索框,可从网站的每个页面访问。该面板包含两个文本框,分别表示第一个和第二个名称 在将搜索参数作为查询字符串提交时,用户将被转移到mysite.com/search/results.aspx。问题在于,根据用户从路径提交搜索的位置,可能会出现以下情况:在JavaScript中将路径设置为Root,javascript,asp.net,Javascript,Asp.net,我正在做一个从1.1到2.0的ASP.NET Web应用程序项目的快速移植。因此,模板不是母版页,而是作为自定义控件创建的。侧面板中有一个搜索框,可从网站的每个页面访问。该面板包含两个文本框,分别表示第一个和第二个名称 在将搜索参数作为查询字符串提交时,用户将被转移到mysite.com/search/results.aspx。问题在于,根据用户从路径提交搜索的位置,可能会出现以下情况: mysite.com**/dir1/dir2**/search/results.aspx 我需要从根本上解
mysite.com**/dir1/dir2**/search/results.aspx
我需要从根本上解决这个问题,看起来JS位置对象就是问题所在
这是原始代码。如何构造链接以从根解析
rightGutter.Controls.Add(new LiteralControl("<script language=javascript>"));
rightGutter.Controls.Add(new LiteralControl
("function doPhoneSearch(txtval,txtVal1) {"));
rightGutter.Controls.Add
(new LiteralControl("location.replace
('search/results.aspx?lnamedpco=' + txtval+'&fname='+txtVal1);"));
rightGutter.Controls.Add(new LiteralControl("txtval=\"\";"));
rightGutter.Controls.Add(new LiteralControl("return false;"));
rightGutter.Controls.Add(new LiteralControl("}"));
rightGutter.Controls.Add(new LiteralControl("</script>"));
HtmlTableCell rightCell8 = new HtmlTableCell();
rightCell8.Attributes.Add("align", "right");
rightCell8.Controls.Add
(new LiteralControl
("<a onClick=\"doPhoneSearch(document.getElementsByName
('lnamedpco')[0].value,
document.getElementsByName('fname')[0].value)\">"));
Image bgImage5 = new Image();
bgImage5.ImageUrl = "~/images/gobtn.gif";
bgImage5.Attributes.Add("runat", "server");
rightCell8.Controls.Add(bgImage5);
rightCell8.Controls.Add(new LiteralControl("</a>"));
<a onClick=\"doPhoneSearch(document.getElementsByName('lnamedpco')[0].value,
document.getElementsByName('fname')[0].value)\">
<img SRC=\"http://mysite/images/gobtn.gif\"
BORDER=\"0\" ALT=\"Submit Form\">
</a>
rightgoolt.Controls.Add(新的LiteralControl(“”);
RightGotter.Controls.Add(新建LiteralControl
(“函数doPhoneSearch(txtval,txtVal1){”);
RightGottle.Controls.Add
(新的LiteralControl(“location.replace
('search/results.aspx?lnamedpco='+txtval+'&fname='+txtVal1);”);
添加(新的LiteralControl(“txtval=\”\“;”));
添加(新的LiteralControl(“返回false;”);
添加(新的LiteralControl(“}”);
添加(新的LiteralControl(“”);
HtmlTableCell rightCell8=新的HtmlTableCell();
rightCell8.属性。添加(“对齐”,“右”);
rightCell8.Controls.Add
(新文字控制)
(""));
图像bgImage5=新图像();
bgImage5.ImageUrl=“~/images/gobtn.gif”;
bgImage5.Attributes.Add(“runat”、“server”);
rightCell8.Controls.Add(bgImage5);
rightCell8.Controls.Add(新的LiteralControl(“”);
来自此帖子:
您可以使用:HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority)获取主机名,即根Url,并在开头加上HTTP://
所以我要做的是替换这一行:
bgImage5.ImageUrl = "~/images/gobtn.gif";
与
这将为您提供一个绝对URL,而不是根相对路径,但它应该可以工作。只需以“/”开始路径即可:
如果您使用“/”,那么它也会选择正确的协议字符串(“http”或“https”)。谢谢,这样做了:location.replace('/mysite/search/phoneSearch.aspx?lnamedpco='+txtval+'&fname='+txtVal1);
bgImage5.ImageUrl = String.Format("{0}{1}",HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority),"/images/gobtn.gif");
rightGutter.Controls.Add
(new LiteralControl("location.replace
('/search/results.aspx?lnamedpco=' + txtval+'&fname='+txtVal1);"));