有没有一种方法可以在MVC页面中定义一个值或节,供布局文件使用以显示布局文件中的可选内容。
_Layout.cshtml
@if (someValueToCheck)
{
//HTML content that will render on every page requiring this content
}
Somepage.cshtml
@{
// set someValueToCheck to notify the Layout to render content
}
发布于 2018-07-13 04:29:05
部分通常用于定义页面中的内容,并在布局中显示。因此,如果这就是你真正想要实现的目标,那么它看起来就像:
_Layout.cshtml
@if(IsSectionDefined("optionalSection")){
<div class="optional-content">
@RenderSection(commonBodyContainer)
</div>
}
@RenderBody()
renderOptionalContent.cshtml
@section optionalSection
{
<div>Content for opional-content</div>
}
如果您不需要呈现从视图传递到布局的内容,我更喜欢创建一个强类型的描述性方法来执行逻辑并将值存储在ViewData中:
internal static class WebViewPageExtensions
{
const string ViewDataContentBlahKey = "ContentBlahKey";
public static void SetShowContentBlah(this WebViewPage instance
,bool value)
{
instance.ViewData[ViewDataContentBlahKey] = value;
}
public static void GetShowContentBlah(this WebViewPage instance)
{
// if it's not set to false, it will be null
var result = instance.ViewData[ViewDataContentBlahKey] as bool?;
return result.HasValue && result.Value;
}
}
_Layout.cshtml
@if(GetShowContentBlah())){
<div class="optional-content">
My Optional Content
</div>
}
renderOptionalContent.cshtml
@{ SetShowContentBlah(true); }
https://stackoverflow.com/questions/51278049
复制相似问题