首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >根据消费页面中定义的值在布局中呈现html内容

根据消费页面中定义的值在布局中呈现html内容
EN

Stack Overflow用户
提问于 2018-07-11 13:49:33
回答 1查看 181关注 0票数 1

有没有一种方法可以在MVC页面中定义一个值或节,供布局文件使用以显示布局文件中的可选内容。

_Layout.cshtml

代码语言:javascript
复制
@if (someValueToCheck)
{
    //HTML content that will render on every page requiring this content
}

Somepage.cshtml

代码语言:javascript
复制
@{
   // set someValueToCheck to notify the Layout to render content
}
EN

回答 1

Stack Overflow用户

发布于 2018-07-13 04:29:05

部分通常用于定义页面中的内容,并在布局中显示。因此,如果这就是你真正想要实现的目标,那么它看起来就像:

_Layout.cshtml

代码语言:javascript
复制
@if(IsSectionDefined("optionalSection")){
  <div class="optional-content">
       @RenderSection(commonBodyContainer)
  </div>    
} 

@RenderBody()

renderOptionalContent.cshtml

代码语言:javascript
复制
@section optionalSection 
{ 
  <div>Content for opional-content</div>
}

如果您不需要呈现从视图传递到布局的内容,我更喜欢创建一个强类型的描述性方法来执行逻辑并将值存储在ViewData中:

代码语言:javascript
复制
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

代码语言:javascript
复制
@if(GetShowContentBlah())){
  <div class="optional-content">
    My Optional Content
  </div>    
} 

renderOptionalContent.cshtml

代码语言:javascript
复制
@{ SetShowContentBlah(true); }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51278049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档