繁体   English   中英

在ASPNET MVC 4应用程序中命令Jquery脚本

[英]Jquery scripts order in ASPNET MVC 4 application

我正在使用jqgrid开发ASPNET MVC 4项目。

在那里,ASPNET MVC 4默认放置

@Scripts.Render("~/bundles/jquery")

在_Layout.cshtml文件的末尾。

现在,我有一个使用jqgrid的Index.cshtml

<script type="text/javascript">
    jQuery("#ajaxGrid").jqGrid({

所以我必须包括jqgrid脚本

@section jqgridScripts
{
    <script src="@Url.Content("~/Scripts/jqgrid/i18n/grid.locale-en.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jqgrid/js/jquery.jqGrid.min.js")" type="text/javascript"></script>
}

但在使用.jqgrid之前,我需要加载jqgrid脚本,而这需要加载jquery脚本,因此,jquery脚本需要位于_Layout.cshtml文件的顶部而不是末尾。

根据最佳实践,需要在文件末尾加载jquery脚本,但是如果我这样做,在Index.cshtml文件中它不知道jQuery是什么。

我不能把jqquery脚本和jqgrid脚本放在_Layout.cshtml文件的底部,因为上面是使用jqgrid脚本的Index.cshtml文件内容。

是否有一些我缺少的东西,以便能够在结束时放置jQuery并仍然能够在视图中使用jquery的东西?

谢谢! 吉列尔莫。

__Layout.cshtml:

@Scripts.Render("~/bundles/jquery")
@RenderSection("jqgridScripts", required: false);

@* for script in current page *@
@RenderSection("pageScripts", required: false);

Index.cshtml:

@section pageScripts
{
<script type="text/javascript">
    jQuery("#ajaxGrid").jqGrid({
    ... 
</script>
}

但最好的做法是在代码中使用单独的javascript文件,如下所示:

__Layout.cshtml:

@Scripts.Render("~/bundles/jquery")
@RenderSection("pageScripts", required: false);

Index.cshtml:

@section pageScripts
{
    <script src="@Url.Content("~/Scripts/jqgrid/i18n/grid.locale-en.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jqgrid/js/jquery.jqGrid.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/Site/myscript.js")" type="text/javascript"></script>
}

myscript.js:

$(function() {

   jQuery("#ajaxGrid").jqGrid({ ... });

});

我也遇到过这个问题。 不捆绑jQuery本身似乎有点违反直觉,但这是必须要做的。 在标题中抛出一个jQuery脚本参考。 如果您将jQuery脚本src属性设置为缩小的google托管实例的属性,则很可能无论如何脚本已经缓存在您的客户端中。

这是一个很好的参考......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM