我有asp.net mvc应用程序,它使用razor视图引擎。
我想在身体渲染之前向浏览器发送头,开始并行加载css中链接的css,js和图像。 (您可以在Chrome开发人员工具中查看此技术如何在SO上运行 - 例如网络) 我在asp.net网络表单中找到了关于它的问题:Send head before body to load CSS and JS asap 我尝试使用此解决方案,但它不起作用。
对于剃刀引擎,下一步的顺序是实际的:
我认为好的解决方案是将第3步分为3部分:
其他解决方案是静态包括all.css和basic .js文件(没有部分内容,从视图生成),发送头部,然后生成视图(使用生成FooterScript部分)。
在两种方式中,我都需要从布局页面开始执行,而不是从视图开始执行。首先:布局(头部) - 视图(部分) - 布局(刷新) - 视图(其他) - 布局(主体)。第二种:布局(头部+齐平) - 视图(全部)+布局(主体)。
我的_Layout.cshtml文件:
<html @Html.Raw(ViewBag.xmlns)>
<head>
<title>@ViewBag.Title</title>
@Html.Partial("_MetaTags")
<link href="@Url.ThemeCss("jquery-ui-1.8.18.custom.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Css("masterPage.css")" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="/favicon.ico"/>
@RenderSection("Css", required: false)
<script src="@Url.CommonScript("jquery.common.min.js")" type="text/javascript"></script>
<script src="@Url.Script("Master.js")" type="text/javascript"></script>
@RenderSection("Head", required: false)
</head>
<body>
<div id="pageWhithoutFooter">
<div id="main">
@RenderBody()
</div>
</div>
@RenderSection("FooterScript", required: false)
</body>
</html>
HOWTO?
答案 0 :(得分:3)
尝试将您的头部分放入部分视图,然后在您的控制器中调用它:
PartialView("_PageHeader").ExecuteResult(ControllerContext);
Response.Flush();
// Generate model
return View(model);
没有对此进行测试,但我不明白为什么它不起作用。