2011-01-31 41 views
0

我正在做一個ASP.NET Web應用程序項目從1.1到2.0的快速端口。所以,而不是一個母版頁模板被創建爲一個自定義控件。在側面板上有一個搜索框,可從網站的每個頁面訪問。該面板包含兩個用於第一個和第二個名稱的文本框。在JavaScript中設置根路徑

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

回答

1

只是一個「/」開始的路徑:

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

如果使用「//」,而不是那麼它還會拿起權協議字符串(「http」或「https」開頭)。

+0

謝謝,這樣做:location.replace('/ mysite/search/phoneSearch.aspx?lnamedpco ='+ txtval +'&fname = 「+ txtVal1); – IrishChieftain 2011-01-31 18:39:05

1

從這個帖子:Get URL of ASP.Net Page in code-behind

您可以使用: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,而不是一個根相對路徑,但它應該工作。

+0

只有問題是,圖像不會解決... – IrishChieftain 2011-01-31 18:39:35