折叠 cshtml 中的 C# 块并保存

Posted

技术标签:

【中文标题】折叠 cshtml 中的 C# 块并保存【英文标题】:Collapse C# block within cshtml and save it 【发布时间】:2011-08-26 07:56:45 【问题描述】:

我们的 cshtml 文件中有一些 C# 代码块,它们必须在 cshtml 中呈现,而不能在其他任何地方呈现(显然这不是一个出色的案例,但这是另一个问题)。

我们如何折叠或隐藏这些代码块,以便让我们的设计人员更顺畅地工作?我们还想在使用标记的进度演示期间隐藏这些代码块。

真正的问题是我们还必须将视觉表示保存到 SVN 中

这个或插件是否有任何原生 VS 2010 功能?也许有机会使用“部分”cshtml 页面,其中所有标记都在一个文件中,所有 C# 代码都在另一个文件中?

不幸的是,VS 不会折叠此类文件中#region 指令内的 C# 代码块。

最终有一个类似的问题Regions In ASP.NET Views?,但它没有给出关于在使用“折叠标签”上下文菜单操作项时如何保存折叠表示的答案。

【问题讨论】:

【参考方案1】:

尝试使用 Visual Studio 的折叠功能。默认情况下,我认为关键是:

[Ctrl+M,Ctrl+H]隐藏任意选择, [Ctrl+M,Ctrl+U] 取消隐藏(折叠时)。

这应该允许您暂时隐藏任何代码。更多详情请访问MSDN

这就是你要找的吗?

进一步阅读后,您希望将它们保存为折叠状态,显然.cshtml 不支持#regions。我想一个老套的解决方案可能是旧的:

@if(false)
    <div>
        <!--/*your long code*/-->
    </div>

或类似的东西,但你明白了:)

【讨论】:

【参考方案2】:

只需选择您的代码,右键单击并选择折叠标签

【讨论】:

这适用于原始问题中所述的代码。但是我们的目标是将表示(折叠与否,或至少折叠的能力 - 与区域一样)保存到 SVN - 显然我们必须解决这个问题,问题是关于这个【参考方案3】:

我认为 cshtml 文件用于表示层的“用户控制”端。如果您的视图文件中有太多代码,那么我会重构代码并将可重用的组件移动到部分视图中。然后我会通过

包含这些部分视图

@Html.RenderPartial("PartialViewName", Model.propertyToRender), 或者我会使用

@ Html.RenderAction("ActionName", "ControllerName") ;

【讨论】:

不幸的是,我们已经在给定的实现中拥有复杂的部分视图结构,因此我们无法利用这种方法。重构是个好主意,但我们负担不起,因为我们的进度非常激进,所以目前我们正在寻找隐藏 C# 块的方法,仅此而已 另一种选择是审查流程。有 UI 控件和表示逻辑层。无论表示逻辑层如何,设计人员都应该担心 UI 控件。这是根据 Dino 的《架构企业应用程序》一书。不确定这在您的场景中有多重要。

以上是关于折叠 cshtml 中的 C# 块并保存的主要内容,如果未能解决你的问题,请参考以下文章

MVC系列-12.项目的重新规划

在cshtml文件中的C#块代码之间插入html标签

如何将子字符串拆分为多个块并使用 C# 将它们输入到表中?

Visual Studio 2012(C#)中的可折叠(条件、循环)块[重复]

asp.netMVC3.0 一个页面做了Layout布局页后,引用的JavaScript和CSS失效了

c# Excel 数据透视表中的折叠字段