簡體   English   中英

在JavaScript中設置Root的路徑

[英]Set Path to Root in JavaScript

我正在快速將ASP.NET Web應用程序項目從1.1移植到2.0。 因此,模板是作為自定義控件創建的,而不是母版頁。 側面板上有一個搜索框,可從網站上的每個頁面訪問。 該面板包含兩個用於名字和名字的文本框。

在將搜索參數作為查詢字符串提交時,用戶將轉移到mysite.com/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>

從這篇文章: 在代碼隱藏中獲取ASP.Net頁面的URL

您可以使用:HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority)來獲取主機名,即根URL,其開頭是HTTP://。

所以我要做的就是替換這一行:

bgImage5.ImageUrl = "~/images/gobtn.gif";

bgImage5.ImageUrl = String.Format("{0}{1}",HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority),"/images/gobtn.gif");

這將為您提供絕對URL而不是根相對路徑,但它應該工作。

只需用“/”開始路徑:

rightGutter.Controls.Add
    (new LiteralControl("location.replace
        ('/search/results.aspx?lnamedpco=' + txtval+'&fname='+txtVal1);"));

如果您使用“ //”代替,那么它還將選擇正確的協議字符串(“ http”或“ https”)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM