【发布时间】:2011-09-26 19:30:57
【问题描述】:
我正在使用的部分视图需要包含某些 jQuery 库,我目前正在尝试考虑最好的方法来很好地添加它们。
我目前的设置如下:
_Layout.cshtml:
...
@if (ViewBag.jQuery)
{
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")"
type="text/javascript"></script>
}
...
Index.cshtml:
...
@{ Html.RenderPartial("PartialView",
new MVCModel.Models.MyModel(),
new ViewDataDictionary { { "ViewBag", ViewBag } }); }
...
PartialView.cshtml:
...
@{
if (ViewBag.ViewBag != null)
{
var vb = (dynamic)ViewBag.ViewBag;
vb.jQuery = true;
}
}
...
所以我要做的是在局部视图中“打开”库,并让该布尔值传播到主布局。这使得我可以在任何我想要的地方(许多部分视图,或一个视图多次使用)尽可能多地启用该库,但它只会被包含一次。最重要的是,我可以控制包含的顺序,因此我可以确保首先包含文件依赖项。
我只是想知道是否有更好的方法来解决这个问题。
现在我最大的两个问题是:
- ViewBag 不是强类型的,因此智能感知不会告诉我哪些库可供我使用。
- 将 ViewBag 传递给局部视图,以便我可以重复使用它。
【问题讨论】:
标签: asp.net-mvc razor partial-views javascript