在我的MVC3解决方案中,我试图在this answer中实现解决方案,以在局部视图中动态地向_Layout.cshtml文件添加CSS引用。
以下是我的_Layout文件的片段:
<!DOCTYPE html>
<html>
<head>
@Html.RenderStyles()
</head>
<body>
<div id="header-wrapper">
@Html.Action("Header", "Shared")
</div>
<div class="container">
@RenderBody()
</div>
@RenderSection("scripts", required: false)
</body>
</html>
并在局部视图中(由@ Html.Action(“Header”,“Shared”)位渲染):
@{
Html.AddStyle(Model.Company.CSSPath);
}
虽然HtmlExtension方法按预期工作,但似乎事件发生的顺序不正确。
在部分视图有时间将CSS文件添加到样式之前,_Layout头中的@ Html.RenderStyles()正在出现。我的印象是部分视图在_Layout之前呈现。
我猜测原因与我使用Html.Action调用渲染我的部分视图这一事实有关。但是,如果我不这样做,那么如何使用所需的模型填充“部分”视图?
Per Matt Razza的评论,如果我使用以下方式渲染局部视图“正常方式”: @ Html.Partial(“ViewName”,型号) 然后我需要给我的_Layout一个模型,然后强制所有其他模型继承该模型?这真的是最好的选择吗?