1

将脚本添加到视图通常涉及以下内容:

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

不幸的是,如果应用程序部署在 IIS 6 下的虚拟目录中,这将不起作用。此处讨论的替代方法涉及使用带有“~”的 Url.Content 来动态解析路径,但这完全破坏了 JS IntelliSense。

有没有办法解决这个问题并让 IntelliSense 工作而不会失去在虚拟目录中部署应用程序的能力?

4

5 回答 5

3

对于部署代码,您可以使用 google ajax apis 来加载 JQuery。推荐它,因为由于使用了 google CDN,它有助于页面加载时间。

要获得智能感知,请将其添加到您的页面

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

这不会发出,因为它在 if(false) 内,但智能感知会识别它

于 2009-03-16T11:00:44.290 回答
1

我使用这样的东西:

   <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>--%> 

然后,当您想使用智能感知时,您必须取消注释第二个参考。这很烦人,但我遇到的唯一解决方法。

于 2009-03-16T17:57:57.797 回答
1

查看Visual Web Developer Team Blog上的JScript IntelliSense 常见问题解答。评论还提到了 Srully 的伎俩。if(false)

于 2009-03-27T00:52:16.770 回答
1

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

@if (false)
{
   <script src="http://localhost/Shared/jQuery/js/jquery-1.7.2-vsdoc.js" type="text/javascript"></script>
}
于 2012-06-05T19:52:21.673 回答
0

我创建了一个 HtmlHelper 扩展(PathReference 是 ReSharper 的 JetBrains.Annotations 属性,可以省略):

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")%>

我现在拥有智能感知和正确的运行时引用。

(感谢 Sruly 的if(false)技巧)

于 2011-02-16T11:23:22.707 回答