MVC剃刀 - 从子视图向共享布局父div添加类

man*_*p84 12 asp.net-mvc razor

我在共享布局中包含div的情况(并非完全不寻常):

<div class="main-content">
    ** views are rendered here in a fixed width container **
</div>
Run Code Online (Sandbox Code Playgroud)

通常这是固定宽度,但在某些页面上,我想将"fullwidth"类添加到此容器中,这样可以填充整个页面宽度.在这种特定情况下,这是因为视图将托管一个需要大型工作空间的Javascript应用程序.

我可以用jQuery做到这一点,但我不希望它在页面渲染后发生,理想情况下Razor可以将此类附加到容器中.

我有什么方法可以在视图中影响共享布局的内容吗?renderSection感觉非常接近我所需要的但是在类属性中定义一个部分只是为了向它附加一个类名是非常疯狂的,类似地重复共享布局会有点过分......

有办法做到这一点吗?

谢谢

Bra*_*tie 11

有点hack-ish但我过去曾经用过它:

_Layout.cshtml

<div class="main-content @ViewBag.ContentCssClass">
    @RenderBody()
</body>
Run Code Online (Sandbox Code Playgroud)

SomeView.cshtml

@{
    ViewBag.ContentCssClass = "full-width";
}
Run Code Online (Sandbox Code Playgroud)

另一种方法是有一个_Layout.cshtml_LayoutFull.cshtml并添加:

@{
    Layout = "~/Views/Shared/_FullLayout.cshtml";
}
Run Code Online (Sandbox Code Playgroud)

这可以直接在视图中,也可以在该控制器的_ViewStart.cshtml文件中(但我从不喜欢为这种简单的更改维护两个HTML页面).