2011-01-31 139 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