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

pol*_*kyg 7 javascript asp.net-mvc jquery jqgrid asp.net-mvc-4

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

在那里,ASPNET MVC 4默认放置

@Scripts.Render("~/bundles/jquery")
Run Code Online (Sandbox Code Playgroud)

在_Layout.cshtml文件的末尾.

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

<script type="text/javascript">
    jQuery("#ajaxGrid").jqGrid({
Run Code Online (Sandbox Code Playgroud)

所以我必须包括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>
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

谢谢!吉列尔莫.

and*_*lzo 14

__Layout.cshtml:

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

@* for script in current page *@
@RenderSection("pageScripts", required: false);
Run Code Online (Sandbox Code Playgroud)

Index.cshtml:

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

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

__Layout.cshtml:

@Scripts.Render("~/bundles/jquery")
@RenderSection("pageScripts", required: false);
Run Code Online (Sandbox Code Playgroud)

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>
}
Run Code Online (Sandbox Code Playgroud)

myscript.js:

$(function() {

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

});
Run Code Online (Sandbox Code Playgroud)