当我创建一个使用Razor的MVC项目时,会生成以下行:
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", false)
Run Code Online (Sandbox Code Playgroud)
这些线有什么区别?是@Scripts.Render生成一个<scripts>部分然后@RenderSection("scripts", false)呈现它的情况?
第一个呈现一个包,这是一组相关的Javascript文件.例如,您可能希望将jQuery和jQuery UI捆绑在一起.当在发布模式下编译解决方案时,Bundles也可以获得捆绑和缩小的好处.参考:http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification
@RenderSection表示使用相关布局的页面可以在布局中的特定位置注入标记.部分实际上是占位符(ContentPlaceHolder如果您熟悉它,则与Web表单中的服务器控件非常相似).该引用可能就在关闭正文标记之前,有些人认为它是放置脚本的最佳位置.你可以有一个叫做的部分scripts,或者head,或者footer它完全是任意的,部分根本不一定与脚本有关.参考:http://weblogs.asp.net/scottgu/asp-net-mvc-3-layouts-and-sections-with-razor
这些是完全不同的东西.
在@Scripts.Render("~/bundles/jquery")被渲染组你的脚本,创建所有<script>标签.在BundleConfig.cs文件中,您可以创建脚本和css文件包.它的一个优点是允许您将多个常用文件组合在一起.而不是明确地包括这些文件中的每一个,您可以使用显式包含所有这些文件Scripts.Render(groupName).您可以在此处阅读有关捆绑和缩小的更多信息.
这@RenderSection("scripts", false)是关于在视图中渲染一个部分.部分允许您指定布局中的内容区域.它需要一个参数,即该部分的名称.如果您不提供,则会抛出异常.这是一篇很好的文章,解释了ASP.NET MVC中的Layouts,RenderBody,RenderSection和RenderPage.
"RenderSection()"辅助方法的第一个参数指定了我们要在布局模板中的该位置呈现的节的名称.第二个参数是可选的,允许我们定义是否需要渲染部分.如果某个部分是"必需的",那么如果该部分未在基于布局文件的视图模板中实现(这可以更容易地跟踪内容错误),则Razor将在运行时抛出错误.如果不需要某个部分,那么它在视图模板中的存在是可选的,如果没有定义,上面的RenderSection()代码将在运行时不呈现任何内容.
| 归档时间: |
|
| 查看次数: |
9260 次 |
| 最近记录: |