根据RenderBody()的内容添加/删除html标记

时间:2015-06-03 04:58:55

标签: c# asp.net asp.net-mvc asp.net-mvc-5 razor-2

在我的_Layout.cshtml中:




 < section class =“container content-section text-center”>
 @RenderBody()
< / section>
  




我只想在“身体”周围有“部分” “不是主页。





我正在考虑检测网址,但很快意识到我会有很多网站绑定到网站,这不是明智的做法它。





那么我能做些什么来使“部分”包装更聪明,知道什么时候不出现?


& #xA;

谢谢。




2 个答案:

答案 0 :(得分:2)

您可以检查哪个控制器当前正在执行其操作,并检查HomePage Controller:

@{
    var controllerName = ViewContext.RouteData.Values["controller"].ToString();
    var actionName = ViewContext.RouteData.Values["controller"].ToString();
}

@if(controllerName == "HomePage" && actionName == "yourActionName")
{

    @RenderBody()

}
else
{
<section class="container content-section text-center">
@RenderBody()
</section>
}

答案 1 :(得分:0)

至于我,我不会使用条件。 它有点 hack 不是解决方案。下次需要更改某些内容时,您会添加越来越多的IF?

使用两种布局。

_LayoutWithSection.cshtml:

 // ...
 <section class="container content-section text-center">
     @RenderBody
 </section>
 // ...

_Layout.cshtml:

 // ...
 @RenderBody
 // ...

主页/ Index.cshtml:

@{
    Layout = "~/Views/Shared/_LayoutWithSection.cshtml";
}
// ...

_ViewStart.cshtml:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
// ...