ASP.NET 视图中的区域?

Posted

技术标签:

【中文标题】ASP.NET 视图中的区域?【英文标题】:Regions In ASP.NET Views? 【发布时间】:2011-03-22 14:37:00 【问题描述】:

我正在使用 razor 引擎制作一个 ASP.NET MVC 应用程序。 我想知道是否可以在视图中使用Regions。

类似:

#region blabla
    <p>@Model.Name</p>
    <p>...</p>
#endregion

这不起作用。有其他选择吗?

【问题讨论】:

可以使用Ctrl+M、Ctrl+L折叠标签 【参考方案1】:

这适用于 Visual Studio 2015 及更高版本 (感谢@dotnetN00b cmets 部分的示例):

<!-- #region Test -->

code here

<!-- #endregion -->

【讨论】:

如果您有 VS 2012,请下载 Web Essentials 2012。无论哪种情况,您都需要转到 VS(我是 2012)中的菜单,工具 > 扩展和更新 > 在线并搜索为工具。简而言之,IMO,在 MS 提供内置支持之前,这绝对是答案。 语法和&lt;!-- #region Test --&gt;&lt;!-- #endregion --&gt;一样简单。 在没有插件的情况下与 VS2015 一起工作 - 很好的完美答案 这是这里唯一正确的答案,其他人都在谈论折叠PARENT TAG,这不是一回事 这应该是正确答案!无需任何插件即可与 VS2015 配合使用。【参考方案2】:

选择需要转换为区域的部分,然后右键单击并按CollapseTag

【讨论】:

正是我需要的!非常感谢! 我从不知道你可以做到这一点,虽然我不知道如何给这个地区起个名字。也就是说,我看不出有什么理由不应该将其标记为正确答案? 其实这是正确的答案。这个答案已被查克·诺里斯(Chuck Norris)授予赏金,所以不管绿色勾号在哪里。这是正确的。 请注意,当您关闭并重新打开有问题的文件时,这不会保存,这使得它们至少在我的情况下并不是很有趣。 另请注意,这实际上不允许您折叠一组元素,而是折叠它们的父元素和/或单个元素,在这种情况下不会产生预期的效果。就我而言,我正在代码块中寻找可折叠的#region 元素。由于我在 MVC 中使用 asp.net,因此我放置了区域标记,然后使用关闭/结束服务器标签。展开后很丑,但可以:&lt;% // non-collapsed code .. %&gt;&lt;% #region collapsable code #endregion %&gt;&lt;% // resume non-collapsed code.. %&gt; 或者你可以使用 Ctrl-M + Ctrl-H & Ctrl-M + Ctrl-U (***.com/questions/6457967)【参考方案3】:

在 Visual Studio(2015 及更高版本).html 或 .cshtml 代码编辑器中,键入region,然后按Tab 键。这实现了#region sn-p 代码,如下所示:

<!-- #region name -->

//Your html or cshtml codes

<!-- #endregion -->.

【讨论】:

在最近的 VS 版本中绝对是更好的选择 - 而且更自然 在 VS2013 中为我工作 在 Visual Studio 2019 Professional 中为我工作【参考方案4】:

在 Visual Studio 中,您可以像这样手动添加轮廓区域:

创建或删除可折叠区域

    选择要作为可折叠区域处理的文本。

    要创建可折叠区域,请在“编辑”菜单上指向“大纲”,然后单击“隐藏选择”。

编辑器将选择变成一个区域,折叠它,然后 显示一个带有省略号 (...) 的框以指示该区域 包含折叠区域。您可以将鼠标指针悬停在框上 查看其内容。

    要删除可折叠区域,请将其折叠,然后单击以将其选中。

    在“编辑”菜单上,指向“大纲”,然后单击“停止隐藏当前”。

折叠和展开单个区域

    要折叠区域,请单击编辑器边缘的减号 (-)。

    要展开折叠区域,请单击边距中的加号 (+)。

折叠和展开所有区域

在“编辑”菜单上,指向“大纲”,然后单击“全部切换” 大纲。

From MSDN

但这并不实际。

对于 HTML,您可以在文本编辑器选项中手动编辑每个标签的大纲选项:

最小行的最小值为1才有效。

More info on MSDN

【讨论】:

大纲折叠点。我觉得很实用。【参考方案5】:

我的上下文菜单中没有“CollapseTag”选项。我通常做的是:

    选择文本。 转到编辑 -> 大纲 -> 隐藏选择。

使用 Ctrl+M、Ctrl+H

我正在使用 Microsoft Visual Studio Pro 2013。

【讨论】:

这是完美的(y)我喜欢它。太感谢了【参考方案6】:

不,AFAIK 无法在视图中使用区域。您可以使用局部视图将视图的区域分组为可重用的局部视图。

见the newer answer;它起作用并达到预期的效果。

【讨论】:

没用,因为它们在关闭时不保存。【参考方案7】:

Div 是可折叠的,因此您始终可以将它们与某种 id 一起使用来模拟区域。

<div id="BLABLA">...</div>

【讨论】:

【参考方案8】:

您可以使用带有RenderPartialRenderAction 的母版页来缩小您的视图。两者都有自己的位置。

【讨论】:

【参考方案9】:

regions 对我来说是视图中的一种工作,我可以定义一个区域但它不会崩溃。如果你使用@Artur 的使用折叠标签的方法,你就差不多了! :)

【讨论】:

【参考方案10】:

请注意,使用区域可能会导致视图出现问题 - 即使它们在语法上是有效的,但代码和 HTML/SCRIPT 之间的指定通常会变得“混淆”,从而导致不可预知的行为。

DIV 无疑是“更好”的解决方案,尤其是当额外的 DIV 允许以后更改 CSS 样式时具有更大的灵活性。

如果您需要很多区域,请考虑进一步重构您的代码。

【讨论】:

以上是关于ASP.NET 视图中的区域?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 3、Razor 视图和可移植区域

为啥 ASP.NET MVC3 区域和 Razor 视图会产生此错误?

在 ASP.Net MVC (LINQ) 中将嵌套数据从控制器传递到视图

ASP.NET 设计视图 - 移动控件

如何在 ASP.NET Core 中使用区域

ASP.NET MVC 主视图引用的js(jquery)在分部视图中无效,如何解决?