比如有这样一个地址:http://localhost:58911/WebSite/Article/View.aspx?ID=1
asp.net中 用“~/”可以得到“http://localhost:58911/WebSite/”
而HTML中“/”得到的是“http://localhost:58911/”在MasterPage里设置
<script language="javascript" type="text/javascript" src="js/common.js" />
在第二层次的页面(如http://localhost:58911/WebSite/Article/Show.aspx),便引用不到这个js文件。请问如何能够不通过在单独页面添加引用来解决这个问题。 我看很多程序里都用"/?/?"来这样来引用文件。但是调试网站的时候只能定位到http://localhost:58911/,而不能定位到虚拟目录。。

解决方案 »

  1.   

    <script language="javascript" type="text/javascript" src="js/common.js" />
    --><script language="javascript" type="text/javascript" src="~/js/common.js" />~/代表根目录
      

  2.   

    <link rel="Stylesheet" href="~/default.css" runat="server" />
      

  3.   

    对于Css文件有效。 真搞不懂啊, 对js文件没效果
      

  4.   

    <script type="text/javascript" src="../../js/JScript.js">
      

  5.   

    bt招,只试过<a href="~/...." runat="server">xxx</a>
    <script type="text/javascript" src="~/js/common.js" runat="server"></script>
      

  6.   

    刚才看到别人的一个帖子,也是引用不到masterpage的js,
    实在没办法就在本页里边在引用一次吧。<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <script language="javascript" type="text/javascript" src="js/common.js" /></asp:Content>
      

  7.   

    有个办法了,在masterpage的head 部分添加两个Literal控件标明Style与Script
    在MasterPage的OnLoad里执行:
       private void SetStyleAndScript()
        {
            const string style = "<link href=\"{0}{1}\" type=\"text/css\" rel=\"stylesheet\">";
            const string script = "<script language=\"javascript\" type=\"text/javascript\" src=\"{0}{1}\"></script>";
            string apppath = HttpContext.Current.Request.ApplicationPath.EndsWith("/") ? HttpContext.Current.Request.ApplicationPath : HttpContext.Current.Request.ApplicationPath + "/";
            Style.Text = string.Format(style, apppath, "App_Themes/default/Global.css");
            Script.Text = string.Format(script, apppath, "js/common.js");
        }