在我的布局文件中(我使用Razor语法)我已经包含了jQuery script library
。
在我的partialView中,我有jPaginate script library
以及生成此插件的代码。问题是,在那种情况下插件没有被渲染,但是如果我将jQuery script library
移动到PartialView,它就可以工作。但我无法从布局中移动jQuery script library
。
那么,如何访问包含在Layout页面中的脚本 PartialView?
或许还有其他解决方案?
代码:
Layout.cshtml
<head>
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
</head>
<body>
@RenderBody()
@RenderSection("Scripts", false)
</body>
MyView.cshtml
@{ Html.RenderAction("SomeAction", "MyContoller"); } //it outputs the PartialView.vshtml
@section Scripts {
<script src="@Url.Content("~/Scripts/jquery.paginate.js")" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#pages").paginate({
count: 12,
start: 1,
display: 10,
border: false,
text_color: '#888',
background_color: '#EEE',
text_hover_color: 'black',
background_hover_color: '#CFCFCF'
});
});
</script>
}
PartialView.cshtml
<link href="@Url.Content("~/Content/jpaginate.css")" rel="stylesheet" type="text/css" />
<div id="pages"></div>
答案 0 :(得分:4)
您的jQuery脚本在布局中呈现在哪里?它是在布局的最后?如果是这种情况,那么当您在部分中包含插件时,尚未定义jQuery。我建议你在布局中定义一个包含自定义包含脚本的部分:
<body>
...
...
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
@RenderSection("Scripts", false)
</body>
</html>
然后在使用该部分的视图中(不是部分的,部分不应该处理任何脚本,它应该只是标记)覆盖此部分以包含此视图所需的任何插件:
@section Scripts {
<script src="@Url.Content("~/Scripts/foo.js")" type="text/javascript"></script>
<script type="text/javascript">
// some inline script that uses the foo plugin
</script>
}
这样,此页面所需的所有脚本都将在标记结束时呈现,这是推荐的方法。
答案 1 :(得分:2)
如果jQuery的脚本在部分视图的声明之后,您将遇到问题。我建议将jQuery脚本放在RenderBody
。