[英]How to include JavaScript from a Partial View in ASP.NET MVC3
我希望能够为部分视图提供一种在视图底部包含JavaScript代码/文件的方法。 这将使部分视图包含它们所依赖的任何JavaScript文件。 例如,如果我想编写需要创建JQueryUI对话框的部分,我想导入JQueryUI JavaScript文件以及添加呈现对话框的JavaScript代码。
我目前正在父视图中编写此代码,这使得使用局部视图毫无意义。
我知道多次调用RenderPartial
会导致多次包含脚本。 一旦我知道如何从局部视图中将JavaScript实际包含到主视图中,这是一个可解决的问题。
在MasterPage(ASPX)中定义ContentPlaceHolder或在布局页面中定义部分 (Razor)
ASPX :
<body>
<!-- End of Body -->
<asp:ContentPlaceHolder ID="JavaScriptIncludes" runat="server" />
</body>
剃刀 :
<body>
<!-- End of Body -->
@RenderSection("JavaScriptIncludes", required: false)
</body>
然后在部分:
ASPX :
<asp:Content ID="ExtraJs" ContentPlaceHolderID="JavaScriptIncludes" runat="server">
<script type="text/javascript" src="@Url.Content("/Scripts/SomeScript.js")" />
</asp:Content>
剃刀 :
@section JavaScriptIncludes
{
<script type="text/javascript" src="@Url.Content("/Scripts/SomeScript.js")" />
}
还要考虑使用HTML Helper来渲染<script>
标记。
以下是使用任何库的JavaScript代码进行部分视图的方法( 即使在页面末尾加载库时 )
在您的局部视图中添加:
@{
TempData["Script"] += "MyFunction();";
}
<script type="text/javascript">
function MyFunction() {
// you can call your library here, e.g. jquery:
$(function () {
});
}
</script>
在您的_Layout.cshtml页面中添加您的库后添加:
@*LOAD YOUR LIBRARIES HERE (E.G. JQUERY) *@
@if (TempData["Script"] != null)
{
<script type="text/javascript">
@Html.Raw(TempData["Script"].ToString())
</script>
}
您可以将多个部分视图附加到相同的键TempData [“Script”]。 如果你继续使用+ =运算符添加函数,他们将很乐意共存:
@{
TempData["Script"] += "AnotherFunction();";
}
您可以在<body>
标记内包含<script>
标记,以便在局部视图中包含它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.