使用ASP.NETMVC实现jquery包含的干净方法

使用ASP.NETMVC实现jquery包含的干净方法,jquery,asp.net-mvc,Jquery,Asp.net Mvc,你们是如何处理jqueryincludes的 <script type="text/javascript" src="jquery.js"></script> 在Asp.NETMVC中使用部分视图/视图控件时?基本上,我不想让jquery包含在母版页中,因为我不是在所有视图中都使用jquery,但我还希望用户控件能够以一种简单的方式在正确的位置(“头”)创建jquery包含,而无需创建重复的jquery包含 最好的方法是使用ScriptManager,但我不想在我的

你们是如何处理jqueryincludes的

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

在Asp.NETMVC中使用部分视图/视图控件时?基本上,我不想让jquery包含在母版页中,因为我不是在所有视图中都使用jquery,但我还希望用户控件能够以一种简单的方式在正确的位置(“头”)创建jquery包含,而无需创建重复的jquery包含

最好的方法是使用ScriptManager,但我不想在我的应用程序中依赖ASP.NETAjax。我是否可以使用一个“轻量级”脚本管理器来支持新发布的intellisense for jquery

我已经创建了一个WebControl来提供这一功能,但是我没有得到VS2008的intellisense支持,这是我真正想要的


希望这是有意义的。

您始终可以这样做:

制作一个轻量级的util.js,它包含在每个页面中,您可以在其中放置各种常见内容,另外还有:

function loadJSInclude(scriptPath, callback)
{
    var scriptNode = document.createElement('SCRIPT');
    scriptNode.type = 'text/javascript';
    scriptNode.src = scriptPath;

    var headNode = document.getElementsByTagName('HEAD');
    if (headNode[0] != null)
        headNode[0].appendChild(scriptNode);

    if (callback != null)    
    {
        scriptNode.onreadystagechange = callback;            
        scriptNode.onload = callback;
    }
}
然后,在您看来,只需放置:

<script type='text/javascript'>
    if(typeof(someJqueryObject) == "undefined")        
        loadJSInclude('jquery.js', doYourStuff);        
    else        
        doYourStuff();

    function doYourStuff()
    {
        // jQuery will be loaded now, so you can do your stuff here.
    }
</script>

if(typeof(someJqueryObject)=“未定义”)
loadJSInclude('jquery.js',doYourStuff);
其他的
doYourStuff();
函数doYourStuff()
{
//jQuery现在将被加载,所以您可以在这里完成您的工作。
}

不知道如何仅使用部分视图进行此操作,尽管您可以使用现有技术逐页进行此操作


您可以在head标记内的母版页中创建ContentPlaceHolder。而不是在用户控件中,只需将jQuery包含放在页面的ContentPlaceHolder内容区域。

如果在大部分页面中使用jQuery,我会将其放在母版页中。它只会被下载一次,此时它会被缓存在浏览器上,对页面的呈现性能影响微乎其微。

啊,试图发布这篇文章让我发疯,因为它被视为页面的一部分。。。但是

<script src="<%=Url.Content("~/Content/js/jquery-1.2.3.min.js") %>" type="text/javascript"></script>

但这样做不会让您获得良好的智能感知