2011-01-31 28 views
0

私は、1.1から2.0までのASP.NET Webアプリケーションプロジェクトのクイックポートを行っています。したがって、マスターページの代わりにテンプレートがカスタムコントロールとして作成されました。サイドパネルには、サイトのすべてのページからアクセス可能な検索ボックスがあります。パネルには、1番目と2番目の名前の2つのテキストボックスがあります。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

+0

ああ - "/ mysite /"について忘れました:-)うれしいことですよ! – Pointy

1

Get URL of ASP.Net Page in code-behind

あなたは使用することができます:HttpContext.Current.Request.Url.GetLeftPartを(UriPartial.Authority)HTTPで、すなわち、ルートURLをホスト名を取得するには://最初は

だから、私は何だろうと、この行を置き換えます:

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

ルート相対パスとは対照的に、あなたに絶対URLを与えるだろうが、それは動作するはず

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

で。

+0

票のみ...画像が解決しないことが問題でした... – IrishChieftain

関連する問題