关于asp.net:Set在JavaScript中设置Root的路径

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,而不是根相对路径,但它应该工作。