代码之家  ›  专栏  ›  技术社区  ›  Ragesh

ASP.NET MVC相对路径不破坏JavaScript IntelliSense?

  •  1
  • Ragesh  · 技术社区  · 17 年前

    向视图中添加脚本通常涉及如下内容:

    <script src="../../Scripts/jquery-1.3.1.min.js" type="text/javascript"></script>
    

    不幸的是,如果该应用程序部署在IIS6下的虚拟目录中,则此功能不起作用。讨论的备选方案 here 包括使用url.content和“~”动态解析路径,但这完全破坏了JS IntelliSense。

    有没有一种方法可以在不丢失将应用程序部署到虚拟目录中的能力的情况下解决这个问题并使IntelliSense工作?

    5 回复  |  直到 14 年前
        1
  •  1
  •   Kevin Hakanson    17 年前

    退房 JScript IntelliSense FAQ Visual Web Developer Team Blog . 注释还引用了srully的 if(false) 诡计。

        2
  •  3
  •   Sruly    17 年前

    对于部署代码,可以使用GoogleAjax API加载jQuery。这是推荐的,因为它有助于页面加载时间,由于使用谷歌cdn。

    要获取IntelliSense,请将此添加到您的页面

    <% if(false){ %>
        <script src="../../Scripts/jquery-1.3.1.min.js" type="text/javascript"></script>
    <%}%>
    

    这不会发出,因为它在if(false)中,但IntelliSense将识别它

        3
  •  1
  •   Justin    17 年前

    我用这样的东西:

       <script src="<%= ResolveUrl("~/Content/jquery-1.2.6.js") %>" type="text/javascript"></script>   
    
       <%--<script src="../../Content/jquery-1.2.6.js" type="text/javascript"></script>--%> 
    

    然后,如果要使用IntelliSense,则必须取消对第二个引用的注释。这很烦人,但我遇到的唯一解决方法。

        4
  •  1
  •   user1050483    14 年前

    在VS2010中,引用虚拟文件夹/目录中的“*vsdoc.js文件并使intellisense在视图中正常工作而不使用cdn的一种方法是简单地在地址中使用localhost。当为多个Web应用程序集中脚本和内容文件时,虚拟目录是必不可少的。在下面的示例中,我在IIs7.5中创建了“共享”虚拟目录。希望这能帮助别人。

    @if (false)
    {
       <script src="http://localhost/Shared/jQuery/js/jquery-1.7.2-vsdoc.js" type="text/javascript"></script>
    }
    
        5
  •  0
  •   Siewers    15 年前

    我创建了一个htmlhelper扩展(pathreference是一个jetbrains.annotations的resharper属性,可以省略):

    public static class HtmlHelperExtensions
    {
        public static MvcHtmlString Script(this HtmlHelper html, [PathReference]string scriptFile)
        {
            var filePath = VirtualPathUtility.ToAbsolute(scriptFile);
            return new MvcHtmlString("<script type=\"text/javascript\" src=\"" + filePath + "\"></script>");
        }
    }
    

    我在我的主页上就这样做了

    <%
        if (false)
        {
    %>
        <script src="../../Scripts/jquery-ui-1.8.9.custom.min.js" type="text/javascript"></script&gt;
    <%
        }
    %>
    <%:Html.Script("~/Scripts/jquery-ui-1.8.9.custom.min.js")%>
    

    我现在有了IntelliSense和正确的运行时引用。

    (感谢斯鲁里 if(false) 诡计)