Set Path to Root in JavaScript
我正在做一个从1.1到2.0的ASP.NET Web应用程序项目的快速端口。因此,模板不是母版页而是作为自定义控件创建的。侧面板中有一个搜索框,可从网站上的每个页面访问。面板包含两个用于名字和第二个名字的文本框。
在将搜索参数作为查询字符串提交时,用户将被传输到mysite.com/search/results.aspx。问题是,根据用户从路径提交搜索的位置,可能会出现以下情况:
1 | mysite.com**/dir1/dir2**/search/results.aspx |
我需要从根目录解决它,看起来JS位置对象是问题所在。
这是原始代码。如何构造要从根目录解析的链接?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 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("")); 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 onClick="doPhoneSearch(document.getElementsByName('lnamedpco')[0].value, document.getElementsByName('fname')[0].value)"> <img SRC="http://mysite/images/gobtn.gif" BORDER="0" ALT="Submit Form"> |
只需以"/"开始路径:
1 2 3 | rightGutter.Controls.Add (new LiteralControl("location.replace ('/search/results.aspx?lnamedpco=' + txtval+'&fname='+txtVal1);")); |
如果您使用"/",那么它也会选择正确的协议字符串("http"或"https")。
从本文:获取代码隐藏的ASP.NET页的URL
您可以使用:httpcontext.current.request.url.getleftpart(uripartial.authority)获取主机名,即根URL,其开头是http://。
所以我要做的是替换这行:
1 | bgImage5.ImageUrl ="~/images/gobtn.gif"; |
用
1 | bgImage5.ImageUrl = String.Format("{0}{1}",HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority),"/images/gobtn.gif"); |
这将给您一个绝对的URL,而不是根相对路径,但它应该工作。