我正在使用的局部视图需要包含某些jQuery库,并且我正在尝试考虑很好地添加它们的最佳方法。ASP.NET MVC 3 Razor局部视图 - 包含在主布局中的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;
}
}
...
那么什么我试图做的是“tu关于“部分视图中的库,并将该布尔值传播到主布局。这使得我可以像任何想要的那样尽可能多地启用库(许多部分视图或多次使用一个视图),但它只会包含一次。最重要的是,我可以控制包含的顺序,所以我可以确保首先包含文件依赖关系。
我只是想知道是否有一个更好的方式拉断。
现在我的两个最大的问题是:
- 的ViewBag不是强类型,因此智能感知不会告诉我这些库提供给我。
- 将ViewBag传递给局部视图,以便我可以重新使用它。
如果只需要几页上的库,引用每个页面上的所有库并不是一个好主意。这不必要地浪费带宽并使页面复杂化。 –
我不同意。我认为这不会浪费带宽来压缩所有引用,并让客户端浏览器下载一次(每个库只有一个请求而不是一个请求)并依赖于浏览器的缓存。我不明白它是如何使页面变得复杂......在每个页面上以不同的方式加载它会使维护变得复杂...... – tsimbalar
这取决于您下载的文件数量以及您是否真的需要每个页面上的所有文件。有很多时候我会有20多个Javsascript文件在不同的页面上使用。绝对没有理由在每个页面上都显示所有这些内容 - 特别是如果用户不太可能访问需要某些文件的页面。另外,当你在做很多jQuery的时候,你会冒碰撞和其他问题的风险。而且......没有任何东西可以阻止所有文件的缩小。此外,可以同时加载多个缩小文件。 –