我处于在我的共享布局中有一个包含 div 的(并非完全不寻常的)情况:
<div class="main-content">
** views are rendered here in a fixed width container **
</div>
通常这是固定宽度,但在某些页面上,我想将类“fullwidth”添加到此容器中,以使其填充整个页面宽度。在这种特定情况下,这是因为 View 将托管一个需要大工作区的 Javascript 应用程序。
我可以用 jQuery 做到这一点,但我不希望它在页面呈现后发生,理想情况下,Razor 可以将此类附加到容器中。
我有什么办法可以从 View 中影响共享布局的内容吗? renderSection 感觉非常接近我需要的东西,但是在类属性中定义一个部分只是为了给它附加一个类名是非常疯狂的,同样地复制共享布局将是过度的......
有没有办法做到这一点?
谢谢
最佳答案
有点hack-ish,但我过去使用过它:
_Layout.cshtml
<div class="main-content @ViewBag.ContentCssClass">
@RenderBody()
</body>
SomeView.cshtml
@{
ViewBag.ContentCssClass = "full-width";
}
另一种选择是拥有一个
_Layout.cshtml
和 _LayoutFull.cshtml
并添加:@{
Layout = "~/Views/Shared/_FullLayout.cshtml";
}
这可以直接在 View 中,也可以在该 Controller 的
_ViewStart.cshtml
中。文件(但我从不喜欢为这样一个简单的更改维护两个 HTML 页面)。
关于asp.net-mvc - MVC razor - 从 subview 向共享布局父 div 添加类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19054750/