【问题标题】:Set Path to Root in JavaScript在 JavaScript 中设置根路径
【发布时间】:2011-01-31 17:46:14
【问题描述】:

我正在快速将 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>

【问题讨论】:

    标签: javascript asp.net


    【解决方案1】:

    只需以“/”开头的路径:

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

    如果您改用“//”,那么它也会选择正确的协议字符串(“http”或“https”)。

    【讨论】:

    • 谢谢,成功了:location.replace('/mysite/search/phoneSearch.aspx?lnamedpco=' + txtval+'&fname='+txtVal1);
    【解决方案2】:

    来自这个帖子: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,而不是根相对路径,但它应该可以工作。

    【讨论】:

      猜你喜欢
      • 2014-02-15
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 2012-03-03
      • 2011-11-04
      • 1970-01-01
      • 2016-04-21
      • 1970-01-01
      相关资源
      最近更新 更多