asp.net-mvc - MVC razor - 从 subview 向共享布局父 div 添加类

标签 asp.net-mvc razor

我处于在我的共享布局中有一个包含 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/

相关文章:

c# - Func<int,string> 从 Url.Action 返回

asp.net - asp.net 错误的替代错误消息

asp.net-mvc-3 - ReSharper 无法解析 Razor

razor mvc3 中的 javascript 注释

c# - 如何触发异步任务,但在返回 ActionResult 之前等待所有回调?

.net - Asp.Net Mvc 实用程序和帮助程序

asp.net-mvc - 在 MVC4 中创建子对象 - 父对象的信息未传递给 Create() Controller

asp.net-mvc - MVC 表单提交按钮将有条件地具有 OnClick 事件

javascript - MVC 4 基于复选框检查显示/隐藏文本框

datetime - MVC3 和 Razor - 将文本框中的日期时间字符串从 "mm/dd/yyyy 12:00:00 AM"更改为 "mm/dd/yyy"